インフィックス入力を接頭辞に変更する関数を作ってみようとしています。例えば、を入力として(+ x 1)
として出力します。だからここLisp、defunで動作しない命令
は一瞬のために私のコードです:I入力リストとユーザーの入力ならば、それはリストでなければ
(setq x '(Y + 1))
(if (listp x) (list (second x) (first x) (first (last x))) x)
ので、(+ Y 1)
を返します。
しかし、問題は、私はこのコードは関数の中で働いて得ることができないということです。
(defun prefixToInfix (x)(
(if (listp x) (list (second x) (first x) (first (last x))) x)
)
)
関数が実際に作成されますが、私は
(prefixtoinfix '(Y + 1))
それを呼び出すとき、私はエラーを取得しています私のif文は、メインプログラムで動作しますなぜ私は私からそれを実行していないとき、私は知らない
Error: Illegal function object: (IF (LISTP X) (LIST # # #) X).
[condition type: TYPE-ERROR]
関数。
関数本体の周りに余分なカッコがあります。 – jkiiski
どういう意味ですか?それを修正できますか? –
最初の行 '(x)(' - > '(x)')と最後の閉じた括弧の末尾にある括弧を削除してください – jkiiski