【发布时间】:2016-06-09 09:50:06
【问题描述】:
我正在尝试根据另一个列表中的给定值定义一个元素
(define foo ; not working but this is general idea
(λ (x ys)
(for/list ([y ys])
(if (eq? x (car y))
(let ('x (cdr y))
(boolean? x)) ; x not passed, returns #f
'())))) ; or use x to do something like (eval ('and x #t))
期望的输出:
>(foo 'a '((a . true) (b . false)))
#t
显示 (cdr y) 的布尔值实际上传递到 x (只是我正在尝试的一个示例)
算法 - 搜索ys,其中ys 中每个元素的(car y) 等于a,并将布尔值(cdr y) 设置为a。所以上面的x 应该有布尔值#t。
不太明白为什么它不起作用。
【问题讨论】:
-
表达式
(let ('x (cdr y)) ...)的机器解释含义可能与您的意思大不相同。它等价于(let ([quote x] [cdr y]) ...),即让quote=x并让cdr=y。您可能指的是(let ([x (cdr y)]) ...),它表示让x=(cdr y)。你是这个意思吗?