import SimplePrelude hiding (flip) derive :: (Float -> Float) -> (Float -> Float) derive f = f' where f' x = (f (x +. dx) -. f x) /. dx dx :: Float dx = 0.0001 square :: Float -> Float square x = x *. x add1 :: Float -> Float -> Float add1 x y = x +. y add2 :: Float -> (Float -> Float) add2 x = \y -> x +. y add3 :: Float -> (Float -> Float) add3 = \x y -> x +. y -- Flips the argument of a binary function: flip :: (a -> b -> c) -> (b -> a -> c) flip f = \x y -> f y x