僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。
手習いの例題に、アトムのリストから、指定されたアトムと
同じ最初のアトムを一つ消すものがあった。
全部消すように書いてみた。
(define r-rember (lambda (atom list) (cond ((null? list) '()) ((eq? atom (car list)) (r-rember atom (cdr list))) (#t (cons (car list) (r-rember atom (cdr list)))))))
最初のhackはぜんぜんダメだったが、バスの中で 思いついた、eq? が真のときに再帰を追記する案が 思ったよりあっさり動いてしまった。
(rember 'a '(b c d a a f)) (b c d a f) (r-rember 'a '(b c d a a f)) (b c d f)
別々の行に同じ処理、というのも変な気はするが。
リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。