【发布时间】:2009-11-02 03:10:52
【问题描述】:
我正在尝试为数字电子课程制作一个真值表生成器,因为这就是我在业余时间获得乐趣的方式,不要评判我。
任何人,我想我应该有一个哈希值,字符串等效于操作符作为键,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) 以及 @ 987654333@].
【问题讨论】: