我map用来测试值列表以查看它们是否具有给定的属性。然后,我想看看他们是否都拥有该属性并返回如果他们都true 拥有。
所以我的第一个想法是只给出and列表,(and (list #t #t #f))但这似乎将整个(#t #t #f)视为布尔值 true 并返回它。
所以,我想我可以使用foldl. 我知道这(foldl + 0 (list 1 2 3))行得通,我认为这也(foldl and #t (list #t #t #f))应该行得通……但事实并非如此。
在DrRacket(使用#lang racket)中,我得到错误“ and: bad syntax in: and”,这不太有用,但在Repl.it(使用BiWaScheme)上,我得到错误“ Error: #<Syntax and> is not a function”。
所以,我猜这and是一个宏?支持这一点,如果我只是评估+I get #<procedure:+>,但对于andI get and: bad syntax in: and(扼要地说,xor是一个过程但是or,nor和nand不是)。
那么,是宏还是什么(可能是为了方便短路)?如果是这样,将执行“与”操作的布尔函数是什么?