Size: a a a

2020 December 04

к

кана in haskell_blah
X с произведением из двух рекордов
источник

к

кана in haskell_blah
f (X a b) = a.a + b.y
источник

к

кана in haskell_blah
это кстати один из самых сложных моментов при транспиляции пурсы в хаскель
источник

к

кана in haskell_blah
потому что если компилировать все рекорды в какие-нибудь анонимные хаскельные, то вроде просто выходит, но выхлоп получается очень не идеоматичным
источник

RR

Ryner ライナ Reinhardt ... in haskell_blah
Вот бы анонимные рекорды в идрис ещё
источник

JC

John Cantrell in haskell_blah
кана
нет, в принципе другие, в пурсе есть только анонимные рекорды
Неудобно ведь
источник

RR

Ryner ライナ Reinhardt ... in haskell_blah
И синтаксис field = value когда создаёшь рекорд
источник

JC

John Cantrell in haskell_blah
Ryner ライナ Reinhardt ラインハルト
Вот бы анонимные рекорды в идрис ещё
Зачем?
источник

к

кана in haskell_blah
зато можно делать что-то вроде такого

type X a = { a :: Int, b :: String | a }

newtype Y = Y (X { c :: String })
newtype Z = Z (X {})
источник

к

кана in haskell_blah
или просто не давать рекордам номинальность, а работать только с анонимными
источник

in haskell_blah
хаскель так бы и выглядел, если бы его делали сейчас
источник

к

кана in haskell_blah
это было бы ужасно
источник

RR

Ryner ライナ Reinhardt ... in haskell_blah
John Cantrell
Зачем?
Ну, что бы не писать:

record DeleteBody where
 constructor MkDeleteBody
 id : String

deleteHandler : DeleteBody -> Handler ()
deleteHandler (MkDeleteBody id) = …
источник

к

кана in haskell_blah
почти вся работа с рекордами в продакшен пурсе что я видел это постоянный анвраппинг из ньютапов и враппинг обратно
источник

к

кана in haskell_blah
f :: Y -> Y
f x = wrap ((unwrap x) { a = 1 })
источник

RR

Ryner ライナ Reinhardt ... in haskell_blah
Это всё потому что там для тайп алиасов нельзя делать инстансы
источник

RR

Ryner ライナ Reinhardt ... in haskell_blah
Можно было бы, тогда не было бы проблем таких
источник

VD

Velvet Darkness in haskell_blah
Кстать, в языках с анонимными рекордами не пойму чо мешает делать полиморфизм анонимно\номинально по рекорду.
Типа foo: ~User -> Bar чтоб кушать анонимные рекорды с такими же полями как в User и без тильды чтоб прям номинально-номинально кушать.
источник

к

кана in haskell_blah
а что такое User?
источник

VD

Velvet Darkness in haskell_blah
Произвольный рекорд, тут не принципиально.
источник