1

要素 el がリストのメンバーであり、アトムを返すかどうかを計算する反復関数を実行したいと考えています。

;;; これがリストです (setf lst '(abcde 1 2 3 4 5))

;;;これは、リストのメンバーかどうかをチェックする関数です。

(defun checklist (a lst)
           (if (member a alist)
               a))

入力を入れると -> (checklist 1 lst) 、数字が返されます...しかし、アルファベットを入力するとエラーが返されます。..誰でも私が問題を説明するのを手伝ってくれますか?? 前もって感謝します 。

================================================== ==============================

入力時 --> (question5 a lst)

このようなエラーが発生します。

CG-USER(7): (question5 a lst) エラー: バインドされていない変数 `A' の値を取得しようとしています。【コンディションタイプ:UNBOUND-VARIABLE】

4

1 に答える 1

3

それは宿題ですか?

もし、そうなら:

member私はあなたにとって役に立たないと思います。DO反復ソリューションを実行する場合は、またはのようなものを使用しますDOLIST

いいえの場合:

Common Lisp には、要素を順番に検索する関数 (リスト、ベクトル、文字列、...) がありますFIND

追加:使用(question5 'a lst)

また、定義には不幸な部分があることに注意してください。

(checklist nil '(a b c))

(checklist nil '(a b c nil))

両方とも戻りNILます。

ところで、Touretzky の Lisp 入門書は無料でダウンロードでき ます

于 2012-07-13T07:29:09.933 に答える