fork(1) download
  1. f :: (Num a) => a -> a
  2. f x = abs(42-x)^2
  3.  
  4. improve :: (Fractional a) => (a -> b) -> a -> (a, b)
  5. improve f x =
  6. let newX = x+0.1
  7. in (newX, f newX)
  8.  
  9. step :: (Fractional a, Ord b) => (a -> b) -> b -> a -> (a, b)
  10. step f goal x =
  11. let
  12. newX = x+0.1
  13. err = f newX
  14. in
  15. if err < goal then (newX, err) else step f goal newX
  16.  
  17. optimize :: (Fractional a, Ord b) => (a -> b) -> b -> (a, b)
  18. optimize f goal = step f goal 0
  19.  
  20. main :: IO ()
  21. main = print $ optimize f 0.5
Success #stdin #stdout 0s 6268KB
stdin
Standard input is empty
stdout
(41.30000000000032,0.48999999999955635)