草庐IT

ruby - 寻找 "real"使用延续的例子

我试图掌握延续的概念,我从Wikipediaarticle中找到了几个像这样的小教学示例。:(definethe-continuation#f)(define(test)(let((i0));call/cccallsitsfirstfunctionargument,passing;acontinuationvariablerepresentingthispointin;theprogramastheargumenttothatfunction.;;Inthiscase,thefunctionargumentassignsthat;continuationtothevariablethe

ruby - Lisp 和 Erlang 原子、Ruby 和 Scheme 符号。它们有多有用?

在编程语言中具有原子数据类型的特性有多大用处?一些编程语言有原子或符号的概念来表示各种常量。我遇到的语言(Lisp、Ruby和Erlang)之间存在一些差异,但在我看来,一般概念是相同的。我对编程语言设计很感兴趣,我想知道原子类型在现实生活中有什么值(value)。没有它,Python、Java、C#等其他语言似乎也做得很好。我没有Lisp或Ruby的实际经验(我知道语法,但没有在实际项目中使用过)。我已经足够使用Erlang来适应那里的概念。 最佳答案 Atomsareliterals,constantswiththeirownn

javascript - 为什么此代码未定义但不是 2?

我尝试将此Scheme代码转换为Javascript:(define(doublef)(lambda(x)(f(fx))))(define(incx)(+x1))((doubleinc)0)((doubleinc)0)表示(inc(inc0)),所以它返回2。这是我的Javascript代码:vardouble=function(f){returnfunction(x){f(f(x));}}varinc=function(x){returnx+1;}double(inc)(0);但是double(inc)(0)返回undefined,而不是2。为什么? 最佳

javascript - 程序化非尾递归消除

我正在用JavaScript制作一个玩具Lisp解释器。JS没有尾递归消除(TRE),所以我在JS中使用while循环实现了TRE(伪代码):functioneval(exp,env)whiletrueifexpisselfevaluatingreturnexpelseif......elseifexpisafunctioncallprocedure=eval(car(exp),env)arguments=eval_operands(cdr(exp),env)exp=procedure.bodyenv=extend_env(procedure.env,env)continue#tail

javascript - 获取对运算符后面的 JavaScript 函数对象的引用

这是一个lisp过程,它简单地将“a”加到“b”的绝对值上:(define(a-plus-abs-bab)((if(>b0)+-)ab))我认为这很漂亮,我正在尝试找到用JavaScript编写它的最佳方式。但是我的JavaScript代码并不漂亮:varplus=function(a,b){returna+b;};varminus=function(a,b){returna-b;};varaPlusAbsB=function(a,b){return(b>0?plus:minus)(a,b);}主要问题是我不能像使用lisp那样使用+和-符号作为对它们真正表示的函数的引用。谁能想出一种

javascript - 我想实现一个学习 SICP 的方案解释器

我正在看书StructureandInterpretationofComputerPrograms,我想逐渐编写一个方案解释器。你知道最容易阅读(和简短)的方案的实现吗?我将用C编写JavaScript。 最佳答案 SICP本身有几个部分详细介绍了如何构建元循环解释器,但我建议您阅读以下两本书以获得有关Scheme解释器的更好资源:ProgrammingLanguages:ApplicationandInterpretation和EssentialsofProgrammingLanguages.它们既易于阅读,又能逐步指导您构建解释

javascript - 除了 First Class Functions 和 Lexical Scoping,JavaScript 与 Scheme 实现有什么共同之处?

我一直想知道为什么DouglasCrockford总是将JavaScript与Scheme进行比较。是的,JS的设计者打算成为Scheme;但是除了一流的函数支持和词法作用域(已损坏)之外,JS与Scheme有哪些共同点使其成为“披着C外衣的Lisp”? 最佳答案 我想到的另一件事是在整个语言和库中普遍使用单一无处不在的数据结构:conslists在Scheme的情况下,maps(在ECMAScript中称为对象。不仅ECMAScript具有一流的过程这一事实,而且这些过程是唯一的抽象机制。(或者更准确地说是封装机制。)

http中的scheme和小程序中的scheme

1.http中的schemescheme就是url中标识协议的部分,可能是http也可能是ftp等。/标识path的开始。;标识参数的开始,例如:ftp://prep.ai.mit.edu/pub/gnu;type=d?标识查询的开始,例如:http://www.joes-hardware.com/inventory-check.cgi?item=12731&color=blue问题:;和?都能够传递键值对,有什么区别?分号标识的是路径本身的参数,而问号是查询参数。实际应用中都是问号。HTTPURL的路径组件可以分成若干路径段。每段都可以有自己的参数。比如:http://www.joes-ha

xml - SSAX-SXML 和数字

我正在使用SSAX-SXML来处理仅模仿XML数据编码的树结构。所以我想到直接使用SXML表示作为要使用的数据结构。一切都运行良好,我获得了默认访问器和XPath的所有功能,我发现它们非常有用。但是我有一个问题。XML将所有内容都表示为字符串,因此我始终需要将字符串转换为数字,反之亦然。这会降低性能,而且只是一个糟糕的设计理念。我正在考虑获取SXML列表并将所有字符串一次性转换为数字。但是,有没有办法让SXML直接这样做,或者有什么方法可以通过XML告诉某些东西应该表示为数字,而不是字符串?这是我的SXML列表:((wall(@(uid"2387058723"))(pt(@(y"2.0

windows - 我的 Racket 方案命令行在 Windows Powershell 中无法正常工作,我做错了什么

除了racketrepl在Powershell中正常工作,我什么也得不到。作为一个非常基本的例子:PSC:\>racket-e'(display"hi\n")'hin:undefined;cannotreferenceanidentifierbeforeitsdefinitioninmodule:top-levelinternalname:hinPSC:\>或者,在cmd.exe中运行类似(好像被单引号搞糊涂了):C:\Windows\System32>racket-e"(display\"hi\n\")"hiC:\Windows\System32>在Powershell中运行相同的内