CommonLispのネストされたリストは本当に私を混乱させた。ここに問題があります:
再帰を使用して
、最初の引数が2番目の引数(ネストされたリストである可能性があります)にある場合は(nested-list 'b '(a (b c) d))
戻り、それ以外の場合は戻ります。t
nil
試しfind
ましたが、最初の引数が。の場合にのみ機能します'(b c)
。ラムダ式に目を向けました。最初に2番目の引数をフラット化してから、を使用eq
して引数を比較します。
(defun nested-list (x y)
(cond
((null y) ())
(t (append (lambda (flatten) (first y))
それから私は立ち往生しました。ラムダエクスペッションについて多くのことを読んだとしても、それでも私は混乱しました。必要なときにリコールする方法がわかりません。funcall関数は知っていましたが、取得できないことはご存知でしょう。Common Lispを5日間学んだばかりなので、ヒントを教えていただければ幸いです。どうもありがとう!