Почему сумма x y имеет тип (Num a) => a -> a -> a в Haskell?
Я читал о Haskell, и мне трудно понять, как определения функций обрабатываются на этом языке.
Допустим, я определяюsum
функция:
let sum x y = x + y
если я запрашиваю Haskell для его типа
:t sum
я получил
sum :: (Num a) => a -> a -> a
Что это значит=>
оператор? Это как-то связано с лямбда-выражениями? Вот как можно сигнализировать о том, что следует за=>
оператор один, в C #.Что этоa -> a -> a
имею в виду? При осмотре ряда различных функций, которые я пробовал, кажется, чтоa -> a
аргументы и финал-> a
является результатом функции суммы. Если это правильно, то почему бы не(a, a) -> a
Что кажется более интуитивным?