SICP 연습문제 2.4 친절한 풀이
문제
아래는 프로시저가 쌍을 표현하는 다른 방법이다. 이런 표현 방법으로, 어떤 물체 x와 y가 있을 때 (car (cons x y))한 값이 x임을 밝혀 보라.
(define (cons x y) |
여기서 cdr를 어떻게 정의할 수 있는가? (귀띔: 이렇게 정의한 쌍이 올바로 돌아간다는 것을 따져보기 위해서, 1.1.5절의 맞바꿈 계산법을 써 보라.)
문제로 부터 얻은 것
람다식을 연습할 수 있습니다.
cons를 프로시저로 새로 구현하던, 기존의 내장된 cons를 사용하던 사용자는 신경쓸 필요가 없다는 것을 알았습니다.
문제풀이
람다식의 활용이 익숙하지 않은 분들은 이번 문제를 활용해서 이해도를 높일 수 있을 것 같습니다.
맞바꿈 계산법을 이용해서 (car (cons x y))를 정의해 보겠습니다.
(car (cons x y))
(car (lambda (m) (m x y)))
(car (lambda (m) (m x y)))
((lambda (m) (m x y)) (lambda (p q) p))
((lambda (m) (m x y)) (lambda (p q) p))
((lambda (p q) p) x y)
(car (cons x y)) = x
cdr을 정의하는 것은 매우 쉽습니다.
(define (cdr z) |
읽어주셔서 감사합니다.