-2
私は挿入リスト機能を作っています。それは次のようになります:共通のlisp。 cond in defun
(defun INSERT1 (x y)
(setq temp (list x y))
(setq k (sort temp #'< :key #'car)))
(defun INSERT2 (x y)
(setq temp (cons x y))
(setq k (sort temp #'< :key #'car)))
と私はこれらの2つの機能を組み合わせる必要があります。 最初の挿入関数は、 'k'に何もないときに機能します。 2番目のインサートセル関数は、 'k'に要素があったときに機能します。
私は '指揮' を使用する必要があると思った、と私は '指揮' と思っ
(cond ((true/false)if true execute here and return)
((true/false)if true execute here and return)
......
((true/false)if true execute here and return))
ので、私は、この構成されています
(defun INSERT1 (x y)
(setq temp (list x y))
(setq k (sort temp #'< :key #'car)))
(defun INSERT2 (x y)
(setq temp (cons x y))
(setq k (sort temp #'< :key #'car)))
(defun INSERTCELL (x y)
(setq temp nil)
(cond
((eq (car temp) nil) (INSERT1 (x y))
(t (INSERT2 (x y))))))
とエラー:
*** - EVAL: undefined function X
をどのように私はエラーなしでこの問題で 'cond'を使用することができます...
私に正しいコードを教えてください。 Common Lispの(そして一般的には他のLisp)では
'(INSERT1(xy))'は '(INSERT1 xy)'でなければなりません。そうでなければ 'x'は' y'に適用される関数として解釈されます。 – Renzo
ああ..ありがとうレンゾ。それは今働く。 – Hoon