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