例:再帰によるマッチング(2) バックトラックによる実装 (define (matchr p i r cont) (cond ((null? p) (cont i r)) ((null? i) #f) ((pair? (car p)) (let try ((i i) (r r)) (or (matchr (car p) i r try) (matchr (cdr p) i r cont)))) ((eq? (car p) (car i)) (matchr (cdr p) (cdr i) (cons (car i) r) cont)) (else #f)))