0
我練習,我有以下功能:奇怪類型的功能
(defun ifnot (test e1 e2)
(if test e2 e1))
有人問我來形容下式的評價:
(ifnot nil "OK" (error "Unexpected test outcome"))
我不知道,如果問題是關於標記「無」或關於內建錯誤,你可以幫我嗎?
我練習,我有以下功能:奇怪類型的功能
(defun ifnot (test e1 e2)
(if test e2 e1))
有人問我來形容下式的評價:
(ifnot nil "OK" (error "Unexpected test outcome"))
我不知道,如果問題是關於標記「無」或關於內建錯誤,你可以幫我嗎?
ifnot
,就像你寫的那樣,是一個函數。評估函數時,在評估函數體之前評估所有參數。雖然e2
的值在您的示例中丟失,但e2
仍在評估中,因此仍會調用error
。
(defmacro ifnot (test e1 e2)
`(if ,test ,e2 ,e1))
這樣,代碼
(ifnot nil "OK" (error "Unexpected test outcome"))
在編譯時替換爲:
(if nil (error "Unexpected test outcome") "OK")
如果它是一個宏觀而不是,那就你似乎打算工作什麼問題?練習是關於何時以及是否評估函數的參數。 – sepp2k
練習說評估函數調用(ifnot無「OK」...)會產生一個錯誤,我想知道錯誤將會是什麼 – user2233777
意外的測試結果? '(如果不是零...)'_應該像'一樣工作(如果......)'是嗎? –