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