kb84tkhrのブログ

何を書こうか考え中です あ、あと組織とは関係ないってやつです 個人的なやつ

Reasoned Schemer (25) わり算 続き

で本文を読みすすめてみる

  • n < m、n = m、n > m の3つの場合に分けている

それならそういうことがわかりやすいように書くべきなんではないだろうか
素のSchemeで言えば

  (cond ((< n m) ...)
        ((= n m) ...)
        ((> n m) ...))

って書いてあれば一目瞭然なんだから

  • わり算のルールでは、m /= 0 で r < m
  • condeの条件でガードしている

直接は書いてなくても、遠まわしにガードしてることにはなってる

で、(<o r m)はなんの役に立ってるの?

もコレか
これがないと 0 ÷ 0 = 0 あまり 0 っていうことになってしまう

でも意図が読みづらいコードになってるんじゃないかな
ひとまとめにして
m = 0 ならダメ、そうでなければほげほげ、とか
m /= 0 でかつほげほげ、とか書きたくならないのかなあ?
否定やelseが書きづらい(ぽい)から、そういう遠回しが出ちゃうってことはない?