第4章,HtDP。

注意:我也在其他问题中也看到了这一点。

我是否不知道是出于清楚原因还是出于算法原因,基本情况返回的是空值,而不是列表本身为空。

例:

; List-of-numbers -> List-of-numbers
; compute the weekly wages for all given weekly hours
(define (wage* alon)
  (cond
    [(empty? alon) empty] ;<---- see here
    [else (cons (wage (first alon)) (wage* (rest alon)))]))

; Number -> Number
; compute the wage for h hours of work
(define (wage h)
  (* 12 h))

我认为这是正确的。
; List-of-numbers -> List-of-numbers
; compute the weekly wages for all given weekly hours
(define (wage* alon)
  (cond
    [(empty? alon) alon] ;<---- see here
    [else (cons (wage (first alon)) (wage* (rest alon)))]))

; Number -> Number
; compute the wage for h hours of work
(define (wage h)
  (* 12 h))

最佳答案

两种形式都是正确的,并且完全等效,这只是样式问题。尽管可以说这有点清楚,但是因为它更明确地返回了什么:

(if (empty? lst)
  empty
  ...)

最后,这取决于个人喜好与编码约定。如果您是团队的成员,并且每个人都在使用第一个表格,则应该使用它。另一方面,如果您是一个孤独的程序员,那么请使用更适合您的口味的表格。

关于scheme - 为什么返回空而不是列表本身?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15191863/

10-13 09:22