在 htdp 的练习 18.1.12 中,我使用“local”重写了 maxi 函数。
;; maxi : non-empty-lon -> number
;; to determine the largest number on alon
(define (maxi alon)
(cond
[(empty? (rest alon)) (first alon)]
[else (local ((define m (maxi (rest alon))))
(cond
[(> (first alon) m) (first alon)]
[(> m (first (rest alon))) m]
[else (first (rest alon))]))]))
我不确定为什么我会在“现实生活”中这样做,因为这本书的版本似乎更短、更清晰,而且可能也更快。
(define (maxi alon)
(cond
[(empty? (rest alon)) (first alon)]
[else (cond
[(> (first alon) (maxi (rest alon))) (first alon)]
[else (maxi (rest alon))])]))
它是否意味着纯粹的教学练习?有经验的 Schemer 可以评论上面的代码吗?谢谢你。