1

私は LISP に慣れていないので、これがあまり得意ではありません...だから私の問題は、構造 (リストのリスト) が与えられており、私の仕事は、それぞれの 2 番目の項目を取得する関数を作成することです。サブリスト (0 から数えます)。ということで、最終的には戻りたいと思います(果樹園代理店)。

リストを通過する基本的な再帰呼び出しを実行できますが、サブリストの2番目のアイテムを取得する方法がわかりません。

リストの構造:

(defparameter *jack*
'((orange#8 apple fruit basment)
(pear#12 mango fruit basment)
(jones rabbit agent closet)
(jack dog agent yard)
))

私がこれまでに持っているコード:

(defun attempt(*data*)
(cond ((null *data*)
     nil
     )
    ((attempt (rest *data*)))
    ))

私が考えているのは、最初と残りを使用してリストのサブリストを反復処理する必要があるということですが、私が言ったように、私はそれを理解できません。ヘルプ?

4

3 に答える 3

1

はい、末尾再帰手順が必要なこのプロセスを定義できます。

(defun nths (n l)"returns list of nths of a list of lists l"
  (nths-aux n l '()))

(defun nths-aux (n l A)
  (if (null l) A;or (reverse A)
   (nths-aux n (cdr l)  (cons (nth n (car l)) A))))
于 2013-12-13T07:41:53.903 に答える