0
我試圖做一個功能,將中綴輸入更改爲前綴,例如:(x + 1)
作爲輸入輸出爲(+ x 1)
。Lisp,不在defun工作的說明
所以這是我的時刻代碼:
(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))
我得到一個錯誤
Error: Illegal function object: (IF (LISTP X) (LIST # # #) X).
[condition type: TYPE-ERROR]
我不知道爲什麼我的if語句在主程序中工作,但不是當我運行它從我的功能。
在函數體的周圍有多餘的括號。 – jkiiski
你是什麼意思?你能糾正它嗎? –
從第一行'(x)(' - >'(x)''和最後一個關閉部分的末尾刪除開頭paren。 – jkiiski