我做了這個IF-THEN-ELSE演算代碼Lisp的IF-THEN-ELSE LAMBDA計算器實現
(defvar IF-THEN-ELSE
#'(lambda(con)
#'(lambda(x)
#'(lambda(y)
#'(lambda(acc1)
#'(lambda (acc2)
(funcall (funcall (funcall (funcall con x) y) acc1) acc2))))))
)
(defun IF-THEN-ELSEOP(c x y a1 a2)
(funcall (funcall (funcall (funcall (funcall IF-THEN-ELSE c) x) y) a1) a2)
)
這大於或等於運營商
(defvar GEQ
#'(lambda(p)
#'(lambda(q)
(funcall #'LEQOP q p)))
)
LEQOP是「少一個功能或相等「,它的工作正常。所以,當我打電話IF-THEN-ELSE這樣(「六個一」和「二」是教會號)
(if-then-elseop GEQ six two (print "THIS") (print "THAT"))
作爲輸出我有
"THIS"
"THAT"
"THIS"
,我正經過這兩個函數正在被呼叫。我怎樣才能避免它,以獲得只有作爲輸出「這個」?
這發生在我使用的每個函數上,這是一個麻煩,因爲我想在遞歸調用中使用IF-THEN-ELSE,所以只需要在IF-THEN-ELSE eval上調用一個函數。
任何幫助,將不勝感激
謝謝。