iter :: (Num a, Ord a) => (a -> a) -> a -> a -> a -> a iter f eps fx x | (fx - x)^2 < eps = fx | otherwise = iter f eps (f fx) fx root4 :: Double -> Double root4 a = iter (\x -> (3*x + a/(x*x*x))/4) 1e-32 (a/4) 0 main = print (root4 16)