04/03/17 00:23
URLリンク(sky.zero.ad.jp)
人もいないし、黙々と解いてみる。
module Chapter2
import StdEnv
// 1
odd = isEven o ((+)1)
// 2
next :: (Real, Real) -> (Real, Real)
next (_, y) = (y, y/10.0)
reachZero :: (Real, Real) -> Bool
reachZero (_, y) = y == 0.0
Start = eps
where (eps, _) = until reachZero next (1.0, 1.0)
ワンライナーだとこんな感じか。さすがに汚い。
Start = fst (until (((==) 0.0) o snd) (\(_,y) = (y, y/10.0)) (1.0, 1.0))