我正在尝试为数字电子课程制作一个真值表生成器,因为这就是我在业余时间获得乐趣的方式,而不是评判我。
Anywho,我想我会有一个哈希值,字符串等效于运算符作为键,而与这些运算符相对应的 Scheme 过程作为值。
例如
(定义运算符表#hash((“+”。或) (“*“ 。 和)))
所以我可以做类似的事情
(lambda (a b) ((hash-ref operator-table (string-ref input-str i)) a b))
现在我意识到上面的方法可能无法正常工作,但事实上我什至无法修改它,直到我做对了,因为显然and
并且or
在 Scheme 中很特别。在 REPL,如果我输入not
它会回复#<procedure:not>
. 但如果我给它and
或or
,它会说and: bad syntax in: and
。有and
我可以使用的程序版本吗?还是我必须做一个lambda
?还是我完全错过了什么?
我不只是从一开始就使用 lambda 的唯一原因是我不想失去内置的可变参数能力and
[我可以做得(and #t #f)
和 一样好(and #t #f #f #t #f #t)
]。