read
(+ 4 5)
첫번째 define
=>
(if (= 4 0)
5
(inc (+ (dec 4) 5)))
=>
(inc (+ (dec 4) 5)))
=>
(inc
(if (= (dec 4) 0)
5
(inc (+ (dec (dec 4) 5)))))
=>
(inc (inc (+ (dec (dec 4) 5))))
이런 식으로 계속 되어 if 문의 predicate 이 (= 0 0) 으로 evaluate 될 때까지 반복된다.
(inc (inc (inc (inc 5))))
chain of operation 이 보이므로 이것은 recursive process
두번째 define
=>
(if (= 4 0)
5
(+ (dec 4) (inc 5)))
=>
(+ (dec 4) (inc 5))
=>
(+ 3 6)
=>
(if (= 3 0)
6
(+ (dec 3) (inc 6)))
=>
(+ (dec 3) (inc 6))
이런 식으로 계속되어 첫번째 인자가 0 이 될때까지 반복된다.
(+ (dec 1) (inc 8))
=>
(+ 0 9)
=>
(if (= 0 0)
9
(+ (dec 0) (inc 9)))
=>
9
첫번째 인자가 inc 를 몇번이나 더 호출해야 하는 지에 대한 상태값을 나타내므로 이것은 iterative process 라 할 수 있다.