Почему сумма 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Что кажется более интуитивным?

Ответы на вопрос(5)

Ваш ответ на вопрос