私は、可変数の引数を持つことができるユーザ定義のラムダ関数を処理できるインタプリタを構築しようとしています。コードは次のように少し見えます:関数の値がラムダ関数に渡されて評価されないのはなぜですか?
((lambda (x &optional y z) (func_body)) args))
今、私が得ることのできる結果は、評価されていない適切な機能です。私はsquare X = (* X X)
を定義し、私の通訳を実行する場合、たとえば、私が手:私は必要何
(* X X)
が評価された後、上記の関数です。私は次のようなものを試しました:
(let ((func (lambda (x &optional y z) (func_body))))
(apply/funcall func args))
((lambda (x &optional y z) (func_body)) args)
しかし、私は後になっても結果は得られません。私はsquare X = (* X X)
を定義するときにそれを持ってしようとしている、と私が手に入れ:
16
私が行方不明です何上の任意の指導?
編集:args句は(cdr/car Y)
または別の関数によって生成されます。また、関数lispを使ってラムダリストを生成しようとすると、それはシンボルではなく、なぜそうであるのかという疑問がありますか?
args句は、(cdr/car Y)または別の関数によって生成されます。ラムダ関数の多くは、今私が考えることです。基本的に、コマンドラインは '> '四角いX =(* X X)'四角形 ' 結果:'> 16' – KMK
のようなものを読み込みます。 – sds
ありがとうございました! – KMK