假设我们有一对配对列表,例如。 '((a . true) (b . false))
如何在函数中声明它并使用变量做其他事情? (比如用它来评估像(a and b)
这样的布尔表达式)
目前我有
(define foo2
(λ (xs)
(let ((car (first xs)) (cdr (first xs)))
xs)
(eval (and (car (first xs)) ; check a is #t
#t)
)))
适用于列表由单个元素组成的例子:
> (foo2 '((a . true)))
#t
但我想以递归方式(或其他方法)接受多个变量,如'((a . true) (b . false))
。
我尝试了通常的方式
(cons
(eval (and (car (first xs)) #t))
(foo2 (rest xs)))
但不按预期工作。
这可能吗?
(define foo3
(λ (xs)
(let ((car (first xs)) (cdr (first xs)))
xs)
(eval (and a #t)))) ; a is what we defined to be #t