2017-11-16 13 views
0

過去のクラスでLISPについて簡単に話した後、まず頭に飛び込み、CLISPSeibel's PCL chpt 5を読む)を学ぼうと決めました。私の質問は、パラメータのリストを取る関数を書くことです。最初のリストは、2番目のリストにマップされた一連のインデックスです。私は一連のインデックスを渡して、対応する要素を返すようにします。2つのリストをパラメータとして取るLISP関数

これまでのコードの概要は以下のとおりです。私がn番目を使用してそれに引数のリストを渡すことができるかどうかはわかりませんでした。私は体の形がどのように見えるべきかはわかりません。

SYS-情報:CLISP 2.49 Win7の

(defun get-elements('(nth (x y z) '(a b c))) 
    "takes a list of arguments that returns corresponding elements from a list." 
    (format t "The elements at index ~d are: ~%" x y z) 
    ((maybe indexes go here)'(elements go here?)) 

リスト(x y z)はインデックスであり、データリスト(a b c)は、任意の要素のいくつかのリストです。評価は関数get-elementsにデータとして渡されます。私はこの考え方で正しい道を歩いていますか?

LISP教育の関連トピックへのヒントと指摘が非常に高く評価されています。

postmortem: chpts 3-4を再検討すると、PCLは初心者のプログラマーにとっては(少なくとも私にとっては)少し手が届いているように思えます。私は本からコードを入力することはできますが、私は明らかに言語の基本構造を深く理解していません。おそらく、PCLをやり直す前に、Lispへのいくつかのより優しい紹介を試みるでしょう。

+0

、あなたのコードが行うことになっているものの例を与えることができますか? – sds

+0

書籍が章で構成されている理由があります。新しい_言語に関する本の第5章から始めるのは良い考えではありません。なぜ第1章で始まらないのですか? – sds

+0

私はchpt 5にそれを作ったことを明確にすべきです。chpt 3でリッピングされたCDのデータベースを作った後、私は夢中になりました。 –

答えて

3

私は、これはあなたがについて尋ねているものですが、あなたがしようとする場合があります場合はかなりわからない:

(defun get-nth (index-list data-list) 
    (mapcar (lambda (index) 
      (nth index data-list)) 
      index-list)) 
(get-nth '(0 1 0 2 0 3) '(a b c d e f)) 
==> (A B A C A D) 

のLispへ

より穏やかな紹介:

+0

ありがとう、それは私を始めさせるのに十分なものです。 fwiw、私の自己生成コードの大部分は、replにbarfedされています。私は、今後コードを投稿するときにはさらに注意が必要です。 –

関連する問題