Size: a a a

2021 February 12

к

кана in Haskell
если это не они и есть
источник

KV

Kirill Valyavin in Haskell
Я имею в виду анонимные рекорды и суммы, да
источник

к

кана in Haskell
https://github.com/ghc-proposals/ghc-proposals/pull/180

есть такой полумертвый пропосал
источник

AA

A64m AL256m qn<co... in Haskell
Kirill Valyavin
Есть активные пропозалы про структурную типизацию?
для рекордов есть пропозал, но не сильно активный
источник

AA

A64m AL256m qn<co... in Haskell
Kirill Valyavin
Я имею в виду именно чтобы были типы вместо констрейнтов
если типы вместо констрейнтов это не структурная типизация а сабтайпинг же
источник

KV

Kirill Valyavin in Haskell
A64m AL256m qn I0
если типы вместо констрейнтов это не структурная типизация а сабтайпинг же
Почему?
источник
2021 February 13

AA

A64m AL256m qn<co... in Haskell
ну если у нас тип
Rec [a :: Foo, b :: Bar] -> ...

то для того чтоб рекорд Rec [a :: Foo, b :: Bar, c :: Baz] принять нудно отношение подтипирования
а когда говорят про структурную обычно байндед полиморфизм имеют в виду
источник

к

кана in Haskell
A64m AL256m qn I0
ну если у нас тип
Rec [a :: Foo, b :: Bar] -> ...

то для того чтоб рекорд Rec [a :: Foo, b :: Bar, c :: Baz] принять нудно отношение подтипирования
а когда говорят про структурную обычно байндед полиморфизм имеют в виду
так ну не, я полагаю, что

data X = X { a :: Int, b :: Int }
не должен подходить под
f :: Rec (a :: Int) -> ()
источник

к

кана in Haskell
для этого нужен отдельно Rec (a :: Int | r)
источник

KV

Kirill Valyavin in Haskell
A64m AL256m qn I0
ну если у нас тип
Rec [a :: Foo, b :: Bar] -> ...

то для того чтоб рекорд Rec [a :: Foo, b :: Bar, c :: Baz] принять нудно отношение подтипирования
а когда говорят про структурную обычно байндед полиморфизм имеют в виду
Ок, а байндед полиморфизм обязательно должен быть констрейнтом. Значит, я хочу просто синтаксис как в пурсе? Там это именно констрейнт?
источник

AA

A64m AL256m qn<co... in Haskell
кана
для этого нужен отдельно Rec (a :: Int | r)
ну это констрейнт, он инлайн записан просто
источник

AA

A64m AL256m qn<co... in Haskell
Kirill Valyavin
Ок, а байндед полиморфизм обязательно должен быть констрейнтом. Значит, я хочу просто синтаксис как в пурсе? Там это именно констрейнт?
ну да
источник

KV

Kirill Valyavin in Haskell
Понятно
источник

к

кана in Haskell
A64m AL256m qn I0
ну это констрейнт, он инлайн записан просто
ну, это далеко не синтаксический инлайн

type X r = Rec (a :: Int | r )
newtype Y r = Y (X r) -- без всяких эксистов
f :: () -> X ()
источник

AA

A64m AL256m qn<co... in Haskell
хотя я может ошибаюсь
но значение такого типа сделать нельзя же
Rec (a :: Int | r ) ?
источник

к

кана in Haskell
нет
источник

IO

I O in Haskell
I O
Ладно(
Некропостинг конечно, но NP I [f a, f b] -> NP f [a, b] с sop можно делать куда проще чем я в прошлый раз написал,  HTrans как раз для такого
источник

к

кана in Haskell
unsafeCoerce все еще работает отлично)

f :: NP I (Map f xs) -> NP f xs
f = unsafeCoerce
источник

AA

A64m AL256m qn<co... in Haskell
кана
нет
ну значит да, это по сути ограничение полиморфизма типа классовых констрейнтов, только вот так записанное
источник

IO

I O in Haskell
Ну это слишком боринг
источник