Size: a a a

2021 April 08

И

Иван in Haskell Start
Всем привет, у меня тут дурацкий вопрос про правую ассоциативность ->.
Я понимаю что условный тип Int -> Int -> Int это то же самое что и Int -> (Int -> Int) из за того что функции карированы. Но все таки когда мы говорим про ассоциативность какой то операции, мы имеем в виду последовательность в которой эта операция выполняется. И если посмотреть на эту запись Int -> (Int -> Int) с точки зрения последовательности выполнения, она для меня полностью теряет смысл, потому что применение функций левоассоциативно. Вот у меня и возникает вопрос: последовательность выполнения чего именно показывает правая ассоциативность стрелки?
источник

А

Алексей ayaye :)... in Haskell Start
это не применение функций, а создание типа. стрелка берет два типа и создает третий. вот эта операция правоассоциативна
источник

И

Иван in Haskell Start
какой тип создает например внутренняя стрелка?
источник

И

Иван in Haskell Start
и почему она в приоритете?
источник

И

Иван in Haskell Start
та что в скобка
источник

И

Иван in Haskell Start
я в общем не очень понял про идею создания третьего типа
источник

WB

White Bear in Haskell Start
-> тоже конструктор типа
источник

WB

White Bear in Haskell Start
источник

И

Иван in Haskell Start
это кстати я тоже не очень понимаю. Конструктор типа в котором нет ни 1 конструктора данных
источник

WB

White Bear in Haskell Start
И оператор тоже, правоассоциативный с наименьшим приоритетом, даже меньше чем 0
источник

WB

White Bear in Haskell Start
В скобке в приоритете потому что скобки имеют наивысший приоритет
источник

И

Иван in Haskell Start
ну вот я и задал вопрос что это за операция и почему она правоассоциативна. Что означает приоритет скобок в записе Int -> (Int -> Int) ? Для меня сейчас стрелка в типе это скорее аннотация чем какая то операция. и читаю я это как функция которая принимает Int возвращает функцию которая принимает Int и возвращает Int
источник

WB

White Bear in Haskell Start
абстракция - правоассоциативна
применение - левоассоциативно
источник

И

Иван in Haskell Start
ну вот 2 утверждение не вызывает никаких вопросов, а 1 это то что я и спрашиваю
источник

И

Иван in Haskell Start
но к сожалению это не ответ
источник

WB

White Bear in Haskell Start
Все функции принимают только один аргумент, обычно этот аргумент это другая функция которая тоже принимает один аргумент
источник

O

Ortofax in Haskell Start
допустим -> было бы левоассоциативно, что бы это дало?
источник

И

Иван in Haskell Start
для начала я бы хотел понять что именно делает операция ->
источник

WB

White Bear in Haskell Start
А почему ^ правоассоциативно?
источник

O

Ortofax in Haskell Start
f = \a -> \b -> \c -> d правоассоциативно, так что можно переписать как f = (\a -> (\b -> (\c -> d)))
источник