Size: a a a

2021 April 08

O

Ortofax in Haskell Start
в некоторых других языках функции могут принимать типы и возвращать типы, принимать термы и возвращать типы и так далее. более того, в хаскеле можно объявлять функции на типах по аналогии с функциями на термах:
Prelude> type family F a :: *
Prelude> type instance F Int = Char
Prelude> :k F Int
F Int :: *
Prelude> :t (undefined :: F Int)
(undefined :: F Int) :: Char
источник

И

Иван in Haskell Start
про тайпфэмили я не знаю еще ничего
источник

O

Ortofax in Haskell Start
ну вот как тайпфэмили это "обычные" функции на уровне типов, так же и конструкторы типов это функции, похожие на конструкторы значений
источник

И

Иван in Haskell Start
ок, согласен что стрелка это полиморфный конструктор типа каинда * -> * -> *
источник

И

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

WB

White Bear in Haskell Start
В case of например
источник

O

Ortofax in Haskell Start
оператор в смысле конструкция языка?
источник

WB

White Bear in Haskell Start
Да тот что с -1 приоритетом
источник

И

Иван in Haskell Start
ну да, там же получается что на уровне типов есть конструктор типа стрелка
источник

И

Иван in Haskell Start
и есть еще дополнительно оператор
источник

И

Иван in Haskell Start
с таким же названием
источник

WB

White Bear in Haskell Start
В лямбдах тоже еще
источник

O

Ortofax in Haskell Start
почему бы и нет
источник

O

Ortofax in Haskell Start
нэймспэйсы-то разные всё равно
источник

WB

White Bear in Haskell Start
Как раз на лямбде и видно почему правоассоциативный
источник

O

Ortofax in Haskell Start
вот тут
источник

И

Иван in Haskell Start
а это что означает? типо как можно делать конструктор данных и тип с одинаковым назвнанием?
источник

O

Ortofax in Haskell Start
ага
источник

И

Иван in Haskell Start
то есть получается что в аннотации типа используя стрелку я обращаюсь не к оператору -> а к конструктору типа?
источник

O

Ortofax in Haskell Start
у значений типа, конструируемого посредством (->), есть конструктор (->)
источник