SICP 2.53
等価性って難しいね。何となくやってるとわからない部分が出てきそう。
(define (memq item x) (cond ((null? x) false) ((eq? item (car x)) x) (else (memq item (cdr x))))) (list 'a 'b 'c) ; -> (a b c) (list (list 'george)) ; -> ((george)) (cdr '((x1 x2) (y1 y2))) ; -> ((y1 y2)) (cadr '((x1 x2) (y1 y2))) ; -> (y1 y2) (pair? (car '(a short list))) ; -> #f (memq 'red '((red shoes) (blue socks))) ; -> #f (memq 'red '(red shoes blue socks)) ; -> (red shoes blue socks)