単一のリストで、各レコード(name,surname)
を表し、その後、ペアのリストのリストとしてデータを処理するためのより良いアイデアだろう:(名前を見つけ、
(define lst '(((name . a) (sur . b)) ((name . c) (sur . d))))
上記の表現で姓)与えられた()レコードの各フィールドは、常に同じ位置に見出されることを想定し、このように簡単です:
(define display-surname
(lambda (lst name)
(cond ((null? lst) #f)
((eq? (cdaar lst) name) (cdadar lst))
(else (display-surname (cdr lst) name)))))
あなたも、さらに物事を単純化することができます(再度、レコードの各フィールドは常にあると仮定同じ位置に)、上記のd ATA display-surname
の対応する変化と、次のように:
(define lst '((a . b) (c . d)))
(define display-surname
(lambda (lst name)
(cond ((null? lst) #f)
((eq? (caar lst) name) (cdar lst))
(else (display-surname (cdr lst) name)))))
いずれかの方法は、この作品:HERESにいくつかの追加情報:マイナスを置くために時間を持っていますが応答しない人のために
(display-surname lst 'a)
> 'b
(display-surname lst 'x)
> #f
: リストはテキストファイルに保存されます。連絡先を追加する手続きがあります。すべての連絡先には(名前、姓、電話番号、メールアドレス)があります。ファイルのオープンと書き込みは問題ではありません。それは単純なリストではないので、私はいくつかの情報/リンクを私にソリューションを表示しないようにしたいと思います。 リストはいつでも展開することができますので、単純な(car l)は私が探しているものではありません。確かにそれは車とcdrsである。しかし、ネストされたリストのテクニックはありますか? – yaku
私は、あなたが ''((名前は主よ)(sur。Piggles)(名前はCaptain)(sur。あなたの現在の例は少し引用符を誤って使用しているようです? – ikdc
@Arafinweはい正しいです、私の悪い、それは私が言います。 – yaku