在本地声明多个变量并使用它们来做某事

时间:2016-02-26 07:25:05

标签: scheme racket let

假设我们有一对配对列表,例如。 '((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

0 个答案:

没有答案