SICP 연습문제 1.4 친절한 풀이

문제

엮은식의 연산자 자리에 복잡한 식이 다시 와도 앞에서 밝힌 규칙에 따라 식의 값을 구할 수 있다. 다음 프로시저에 인자를 주고 어떻게 계산되는지 밝혀보라.

(define (a-plus-abs-b a b)
((if (> b 0) + -) a b))

문제로 부터 얻은 것

Scheme 언어는 연산자나 프로시저도 데이터처럼 인자로 넘겨줄 수 있는 언어라는 것을 보여준 문제입니다.

문제풀이

(if (> b 0) + -)

위 표현을 주목해서 볼 필요가 있습니다.
b의 값에 따라서 if식이 반환하는 값은 데이터가 아닌 연산자 +,- 입니다.
따라서 a-plus-abs-b 프로시저는 b가 양수일때는

(+ a b)

b가 음수일때는

(- a b)

를 반환할 것입니다.

실제 실행 모습

읽어주셔서 감사합니다.