[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 03/01 00:18 / Filesize : 189 KB / Number-of Response : 847
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Lisp Scheme Part18



1 名前:デフォルトの名無しさん [2007/08/12(日) 21:38:15 ]
過去スレ
Part17: ttp://pc11.2ch.net/test/read.cgi/tech/1177065699/
Part16: ttp://pc11.2ch.net/test/read.cgi/tech/1172404795/
Part15: ttp://pc10.2ch.net/test/read.cgi/tech/1151025773/
Part14: ttp://pc8.2ch.net/test/read.cgi/tech/1132275726/
Part13: ttp://pc8.2ch.net/test/read.cgi/tech/1115901841/
Part12: ttp://pc8.2ch.net/test/read.cgi/tech/1100229366/
Part11: ttp://pc5.2ch.net/test/read.cgi/tech/1091456033/
Part10: ttp://pc5.2ch.net/test/read.cgi/tech/1075630259/
Part9: ttp://pc2.2ch.net/test/read.cgi/tech/1069594582/
Part8: ttp://pc5.2ch.net/tech/kako/1058/10582/1058263391.html
Part7: ttp://pc5.2ch.net/tech/kako/1042/10421/1042167213.html
Part6: ttp://pc3.2ch.net/tech/kako/1031/10315/1031560687.html
Part5: ttp://pc3.2ch.net/tech/kako/1023/10230/1023091882.html
Part4: ttp://pc.2ch.net/tech/kako/1016/10162/1016211619.html
Part3: ttp://pc.2ch.net/tech/kako/1008/10082/1008220265.html
Part2: ttp://pc.2ch.net/tech/kako/1002/10025/1002584344.html
Part1: ttp://piza2.2ch.net/tech/kako/987/987169286.html

99 名前:little schemer [2007/08/24(金) 05:19:11 ]
某scheme本の中で分からない部分があって質問させてください。
以下の定義のmultirember-coをつかって
(multirember-co 'a '((a) ((a))) (lambda (x y) y))
とすると、
((a) ((a)))
が返るのですが、これを(a a)とするにはどうすればよいでしょうか?


(define multirember-co
(lambda (a lat col)
(cond
((null? lat)
(col '() '()))
((atom? (car lat)) (cond
((eq? (car lat) a)
(multirember-co a (cdr lat)
(lambda (newlat seen)
(col newlat (cons (car lat) seen)))))
(else
(multirember-co a (cdr lat)
(lambda (newlat seen)
(col (cons (car lat) newlat) seen))))))
(else (multirember-co a (car lat)
(lambda (newlat seen)
(multirember-co a (cdr lat) (lambda (newlat2 seen2)
(col (cons newlat newlat2)
(cons seen seen2))))))))))


100 名前:little schemer [2007/08/24(金) 12:07:05 ]
99です。
上記の質問よりも、最後のelse以下のところをどのように理解すればよいのか
ヒントとかをもらえたら助かります。上記の処理の内容は、
(multirember-co 'a '(a b c) (lambda (x y) x))
=> (b c)
というように、1つめの引数(atom)を2つめの引数(list)から取る処理です。
このとき、2つめの引数が((a b) a b c d)の時に、つまり(car lat)が
atomでないときの動作が理解しにくいです。一旦(car lat)に対する処理を
行って、それが最後までいった後に、残りの(cdr lat)への処理を続ける
のだと思うのですが、、、、

長々と失礼しました。








[ 続きを読む ] / [ 携帯版 ]

次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<189KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef