fork(1) download
  1. f :: Num a => a -> a
  2. f x = abs(42-x)^2
  3.  
  4. improve :: Fractional b => (b -> c) -> (b, a) -> (b, c)
  5. improve f (x, _) = (newX, f newX) where newX = x+0.1
  6.  
  7. optimize:: (Ord a, Fractional b) => (b -> a) -> a -> b -> (b, a)
  8. optimize f goal x = until isDone (improve f) (0, f x)
  9. where isDone (_, err) = err < goal
  10.  
  11. main :: IO ()
  12. main = print $ optimize f 0.5 0
Success #stdin #stdout 0s 6312KB
stdin
Standard input is empty
stdout
(41.30000000000032,0.48999999999955635)