如何在Scheme中将let实现为lambda函数
作为练习,我尝试将 let 定义为 lambda 函数,如下所示: (define let_as_lambda (lambda (var) (lambda (value body) (var body) val))) 我希望这样…
从方案列表中删除空元素
(define filter-in (lambda (predicate list) (let((f (lambda (l) (filter-in-sexpr predicate l)))) (map f list)))) (define filter-in-aux (lambd…
方案中的延续传递风格?
我在维基百科上遇到了这段代码: (define (pyth x y k) (* x x (lambda (x2) (* y y (lambda (y2) (+ x2 y2 (lambda (x2py2) (sqrt x2py2 k)))))))) …
在方案中返回没有开始括号的准引号?
有没有办法使用准引号返回表达式,同时仍然摆脱开头的括号? 例如: `(a ,(foo)) 可以返回实际上返回 `a *foosvalue) 我意识到这看起来有点随机。我正…
在方案中生成 2-列表的列表
(define cart-product (lambda (sos1 sos2) (if (null? sos1) '() (cons (cart-prod-sexpr (car sos1) sos2) (cart-product (cdr sos1) sos2))))) (de…
返回一个在Scheme中是可变对象的表达式?
您好,我正在尝试编写一个函数,该函数将返回一个可变且可用作过程的表达式。 例如: (fooeq 1 2) 将返回 (eq? 1 2) 而 ((fooeq 1 2)) 将返回 #f 有没…
使用当前函数的命名空间进行评估
以下racket函数产生错误: reference to undefined identifier: val 这是因为eval函数查看全局命名空间,而不是本地函数的命名空间。如何欺骗 eval 使…
Scheme 中的递归函数总是尾部调用优化吗?
我读过一些关于Scheme 中的尾部调用优化的内容。但我不确定我是否理解尾调用的概念。如果我有这样的代码: (define (fac n) (if (= n 0) 1 (* n (fac …
删除列表的最后一个元素(方案)
所以我必须删除方案中列表的最后一个元素。 例如,假设我有一个列表 (1 2 3 4)。我需要返回: (1 2 3) 我的想法: reverse(list) car(list) reverse(l…