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