EoPL reading (18) 1.2.4 Exercises
昨晩のエントリ、番号間違えてた。ってか、朝の通勤時に
(define (car&cdr-inner rslt slist) (cond ((null? slist) errvalue) ((eq? s (car slist)) (make-result 'car rslt)) ((pair? (car slist)) (let ((ret (car&cdr-inner (list 'car rslt) (car slist))))
じゃなくて
(define (car&cdr-inner rslt slist) (cond ((null? slist) errvalue) ((eq? s (car slist)) (make-result 'car rslt)) ((pair? (car slist)) (let ((ret (car&cdr-inner (make-result 'car rslt) (car slist))))
の方が適当なの?って思ってたんですが、そうでも無い。と思ってたらそうでした。上の実装だと
gosh> (car&cdr 'cat '((cat) dog lion) 'fail) (lambda (x) (car (car ()))) gosh>
なんですが、下のだと
gosh> (car&cdr 'cat '((cat) dog lion) 'fail) (lambda (x) (car (car x))) gosh>
になります。試験が足りてませんな。