Scheme是Lisp系列中的一种函数式编程语言,它以lambda演算与eager(applicative-order)评估密切相关。有关URL方案的问题,请使用标记“url-scheme”。
我正在 Racket 中完成一项作业(使用 lambda 的中级学生),我正在尝试制作一个帮助函数来展平列表列表。我不允许使用递归,也不能使用 ap...
在 Scheme 语言中(让我们将 R5RS 作为语言参考)卫生宏可以使用构造(定义语法 )定义,其中 在 Scheme 语言中(让我们将 R5RS 作为语言参考)卫生宏可以使用结构 (define-syntax <keyword> <transformer>) 定义,其中 <keyword> 是宏的名称,<transformer> 描述宏将匹配的 <pattern> <template> 描述了应该如何转换该模式。 <transformer> 有以下形式: 例如: (syntax-rules <literals> <syntax-rule> ...) 但是,也允许指定一些<syntax-rule>作为(<pattern> <template>)声明的一部分。我从语言规范中了解到,出现在(define-syntax swap (syntax-rules () (; pattern to be matched: (swap x y) ; template the pattern will get replaced by: (let ((tmp x)) (set! x y) (set! y tmp))))) 的<literals>中的任何标识符都是模式变量,除非它是开始模式的syntax-rules,或者在<pattern>中列出,或者是标识符<syntax-rule>。模式变量匹配任意输入元素,并用于在模板中返回与模式匹配的输入元素。然而,出现在 <keyword> 中的标识符被解释为要与输入的相应子形式匹配的文字标识符。 实际上,在几乎所有的例子中,人们都可以找到这个文字列表<literals> 保持为空(如上例所示)。 有人可以为我提供一个简单的例子来说明具有此类文字的相关性。在什么样的实际用例中使用这样的文字才有意义?一个具体而简单的例子会有所帮助。
我从书中尝试了以下代码。 ;pg 51 R. Kent Dybvig 的“方案编程语言” (定义惰性 (lambda (t) ;所以懒惰接受参数 t (让...
为什么 `(((call/cc (lambda (k) k)) (lambda (x) x)) “嘿!”)` 评估为“嘿!”?
我正在阅读计划编程语言并在后续部分看到这个例子: (((call/cc (lambda (k) k)) (lambda (x) x)) “嘿!”)=> “嘿!” 我不知道你...
我必须编写一个函数,遍历列表中的子列表并获取每个子列表中的第一个元素。我想我已经找到了正确的解决方案,但我只是不明白为什么它会触发我的基本案例......
我需要在 Scheme (Racket) 的列表列表中使用地图。 我特别想要的是 (map-lists add1 '((3 1) (2 8))) => '((4 2) (3 9))。 我知道如何递归地解决这个问题,...
我希望在 Racket 中执行图形的传递闭包。为此,我需要在您找到匹配的 (a,b) 和 (b,c) 时迭代添加链接。我应该使用 foldl、hash-keys、set->...
我正在尝试定义登录方案。例如,如果 (log (exp 1)) ;=> 1.0 那我怎么写log5(25)呢?
我正在阅读一本关于 Scheme 的书,其中介绍了我使用 writeln 函数的方法。它希望我能够给它一系列的字符串和变量,然后它会像这样输出到控制台。 (写...
我正在阅读一本关于 Scheme 的书,其中介绍了我使用 writeln 函数的方法。它希望我能够给它一系列的字符串和变量,然后它会像这样输出到控制台。 (写...
我正在阅读《Scheme与编程艺术》一书,但对下面的问题想不出答案。如果r是(escaper(lambda(continuation)(continuation body))中的(......(callcc r)......。
`cdr`的`set-car!`也会改变`car`,为什么?
(define l '(a)) (define p (cons l l)) (set-car! (cdr p) 'b)在最后一个(set-car! (cdr p) 'b)之后,p将是((b) b)而不是((a) b)。为什么会这样?
我正在学习LYAHFGG中关于代数数据类型的第8章,当我试图实现类似Scheme的列表操作时,遇到了一个障碍。我的想法是尝试在Pair adt上建立cons、car、cdr,然后 ...
如何用Racket重写递归过程(重复f n)作为一个迭代过程?
这是我对递归过程(repeat f n)的处理方法,它将函数f n次应用于一个参数:(定义(repeat f count) (if (= count 1) f (lambda (x) (f ((...))。
可能与DrRacket中的Macro stepper重复,但我的问题是 "为什么我的Macro stepper中没有 "上一术语 "和 "下一术语 "按钮?我注意到这里:http:/www.ccs.neu.eduhome...
试图用累积递归来做这个'(3 2 1) -> '(6 3 1),我可以得到我想要的结果(某种程度上),我的意思是,我的首字母和休止符似乎是以正确的顺序,但我的(缺点 ...
为什么这个太阳系的数值积分一直在运行?(MIT-scme SCMUTILS)
我想做一个太阳系的数值积分。我以前用普通的Scheme做过,现在我想用麻省理工学院非常有趣的SCMUTILS-library来做。我做了什么。我把太阳能...
我开始学习Scheme,偶然发现了这个奇怪的事情:给定以下过程:(定义(测试x y)(如果(= x 0)0 y ))。当我创建一个条件时,它的评价是 "如期",当我 ...
比如((fn-stringappend string-append) "a""b""c")我知道怎么处理(f x y z)。但是如果参数数量未知怎么办?有没有什么方法可以处理这种问题?
我是Chez的新手,我只是想了解一下现有的各种维护和不维护的仓库。是否有一个通用的首选源码来获取R6RS SRFI库(...