徳が高い ⇔ 低い
Haskellで徳が高いプログラムっていう表現をどこかで見たなーと思ってGoogleに聞いてみました。どうやらここのようです。
Diary
宣言的にプログラムを書くと徳が高いそうです。なるほど。
徳が高い例。
fact 0 = 1 fact n = n * fact (n - 1) fact n = foldl (*) 1 [1..n] fact n = foldr (*) 1 [1..n]
徳が低い例。
fact n | n < 2 = 1 | otherwise = n * fact1 (n - 1) fac n = if (n == 0) then 1 else n * fact4 (n - 1) fact n = case n of 0 -> 1 x -> x * fact5 (x - 1)