デジタル エレクトロニクス コース用の真理値表ジェネレーターを作ろうとしています。
とにかく、演算子に相当する文字列をキーとして持つハッシュと、それらの演算子に対応するSchemeプロシージャを値として持つと思いました。
例えば
(定義演算子テーブル #hash(("+" . or) ("*" 。 と)))
だから私は次のようなことができます
(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
ますか?それとも、何かが完全に欠けていますか?
最初からラムダを使用しなかった唯一の理由は、ビルトインの可変アリティ機能を失いたくないということですand
[私は(and #t #f)
同様に実行できます(and #t #f #f #t #f #t)
]。