Если бы не означало бы, что ggt_euklid принимает значение Nat1 и возвращает функцию?
Нет , это по-прежнему означает, что ggt_euklid
принимает один аргумент типа Nat1
и возвращает функцию типа Nat1->Nat1
, хотя скобки не учитываются .
Стрелка ->
всегда имеет правоассоциативность(когда нет скобок), то есть:
Nat1 -> Nat1 -> Nat1
эквивалентно
Nat1 -> (Nat1 -> Nat1)
, что соответствует приложению функции, всегда будет левой ассоциативностью.(без скобок), например:
ggt_euklid 1 2
эквивалентно
(ggt_euklid 1) 2
Здесь
(ggt_euklid 1) ~ Nat1 -> Nat1
и
(ggt_euklid 1) 2 ~ Nat1
Такнезависимо от того, применяются ли один или два аргумента к ggt_euklid
, он всегда сначала возвращает функцию типа Nat1 -> Nat1
; если указан второй аргумент, он применяет второй аргумент к возвращаемой функции.