2

第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))
4

1 に答える 1

6

どちらの形式も正しく、まったく同じです。スタイルの問題です。これはもう少し明確であると主張することができますが、返されるものがより明確であるため、次のようになります

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

結局のところ、それは個人の趣味とコーディング規約の問題です。あなたがチームのメンバーであり、全員が最初のフォームを使用していた場合は、それを使用する必要があります。一方、あなたが孤独なプログラマーである場合は、自分の好みに合ったフォームを使用してください。

于 2013-03-03T22:52:17.533 に答える