формы записи уравнений
comp :: (b -> c)
-> (a -> b) -> (a -> c)comp f g = \x -> f (g x)
comp :: (b -> c) -> (a -> b) -> a -> c
comp f g x = f (g x)
comp :: (b -> c) -> (a -> b) -> (a -> c)
comp = \f -> \g -> \x -> f (g x)
Все функции в Haskell – это функции с одним аргументом и одним результатом!
Haskell B. Curry – карринг.
«Карринговые» функции – это частично параметризуемые функции.
plus1 :: Integer -> Integer -> Integer -- в карринговой форме
plus1 x y = x + y
plus2 :: (Integer, Integer) -> Integer -- не в карринговой форме
plus2 (x, y) = x + y
curry plus2 => plus1
uncurry plus1 => plus2
curry :: ((a, b) -> c) -> a -> b -> c
uncurry :: (a -> b -> c) -> (a, b) -> c
curry f x y = f (x, y)
uncurry f (x, y) = f x y
( )
( )