我正在尝试为数字电子课程制作一个真值表生成器,因为这就是我在业余时间获得乐趣的方式,而不是评判我。
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)]。