ニュートン法で平方根を求める
ニュートン法で平方根を求める-数学アルゴリズム演習ノート-を参考にニュートン法で平方根を求めるプログラムを書いてみました。do {...} whileのループが、head $ dropWhileになりました。
module Main (main) where sqr :: Double -> Double sqr c = let x = head $ dropWhile (\ x -> x * x < c) [1.0, 2.0 ..] in foldr (\ _ x -> (x + c / x) / 2.0) x [1 .. 10] main :: IO () main = do print $ sqr 2.0 -- => 1.414213562373095 print $ sqr 3.0 -- => 1.7320508075688772 print $ sqr 4.0 -- => 2.0