Size: a a a

2020 May 22

IK

Ilya Kos in Haskell
Ilya Kos
ну первый и второй вариант абсолютно идентичны должны быть
ну я понимаю что это не совсем одно и то же
источник

MK

Maxim Koltsov in Haskell
Ilya Kos
Постоянно с этой проблемой сталкивался, никогда не читал что это)
По идее нижележащая система типов, System F, позваляет создавать типы с forall как угодно глубоко
источник

MK

Maxim Koltsov in Haskell
Но в хаскеле forall разрешен только на верхнем уровне
источник

MK

Maxim Koltsov in Haskell
Потому что иначе ломается вывод типов
источник

MK

Maxim Koltsov in Haskell
А его все любят
источник

IK

Ilya Kos in Haskell
а как же если я заверну в data? Это тоже считается на верхнем уровне?
источник

IK

Ilya Kos in Haskell
и чем оборачивание в data принципиально отличается от моего type?
источник

MK

Maxim Koltsov in Haskell
Некоторые расширения типа RankNTypes и ExistentialQuantification дверцу приоткрывают, но не до конца
источник

IK

Ilya Kos in Haskell
и там и там у меня новое выражение с forall внутри
источник

MK

Maxim Koltsov in Haskell
Ilya Kos
а как же если я заверну в data? Это тоже считается на верхнем уровне?
Не уверен что констрейнт можно завернуть в дату
источник

IK

Ilya Kos in Haskell
Maxim Koltsov
Не уверен что констрейнт можно завернуть в дату
ну через Proxy какую-нибудь. У нас же эказемпляры Contraint — ровно такой же тип как и *
источник

IK

Ilya Kos in Haskell
может не сработать?
источник

IK

Ilya Kos in Haskell
короче чет дыряво это все в вышем хаскеле...
источник

MK

Maxim Koltsov in Haskell
В общем, ты не можешь сделать data Foo = Foo Int (forall a. a)
источник

MK

Maxim Koltsov in Haskell
Потому что тут форолл не на верхнем уровне даты
источник

MK

Maxim Koltsov in Haskell
Особенно это видно если дату как гадт записать
источник

IK

Ilya Kos in Haskell
ну так то да
источник

MK

Maxim Koltsov in Haskell
Хотя это было бы ранк 2
источник

IK

Ilya Kos in Haskell
но если заврнуть этот a в свою дату, то все норм
источник

MK

Maxim Koltsov in Haskell
Но ранк 2 конструкторы нельзя
источник