(hours->wages (list 5 3 6)) から
(cons 60 (hours->wages (list 3 6)))が得られる過程
(hours->wages (list 5 3 6))
= ...
= (cons 60 (hours->wages (list 3 6)))
= …
= (cons 60 (cons 36 (hours->wages (list 6))))
= …
= (cons 60 (cons 36 (cons 72 (hours->wages empty))))
= ...
= (cons 60 (cons 36 (cons 72 empty)))
= (list 60 36 72)
(hours->wages (list 5 3 6))
= (cond
[(empty? (list 5 3 6)) empty]
[else (cons (wage (first (list 5 3 6)))
(hours->wages (rest (list 5 3 6))))])
= (cond
[false empty]
[else (cons (wage (first (list 5 3 6)))
(hours->wages (rest (list 5 3 6))))])
= (cons (wage (first (list 5 3 6)))
(hours->wages (rest (list 5 3 6))))
= (cons (wage 5)
(hours->wages (rest (list 5 3 6))))
= (cons (* 12 5)
(hours->wages (rest (list 5 3 6))))
= (cons 60 (hours->wages (rest (list 5 3 6))))
= (cons 60 (hours->wages (list 3 6)))
この部分は
これは,
(define (hours->wages alon)
(cond
[(empty? alon) empty]
[else (cons (wage (first alon))
(hours->wages (rest alon)))]))
のalon を(list 5 3 6) で置き換えたもの
55