Size: a a a

2021 May 05

MK

Maxim Koltsov in Haskell
TIL
источник

IO

I O in Haskell
data B :: TYPE ('BoxedRep l) where
 T :: B
 F :: B


$WT :: B = CCS_DONT_CARE T! [coercionToken#];

$WF :: B = CCS_DONT_CARE F! [coercionToken#];

T :: forall {l :: Levity}. (l ~# 'Lifted) -> B =
   \r [eta_B0] T [coercionToken#];

F :: forall {l :: Levity}. (l ~# 'Lifted) -> B =
   \r [eta_B0] F [coercionToken#];


Господи, бедные нулярные UnliftedDatatypes
источник

IO

I O in Haskell
А как вообще использовать нулярные левити полиморфные конструкторы?

data B :: TYPE ('BoxedRep l) where
 T :: B
 F :: B

data Foo = Foo (B @'Unlifted)

fooT :: Foo
fooT = Foo T


дает

    • Couldn't match a lifted type with an unlifted type
     Expected: B @'Unlifted
       Actual: B @'Lifted
источник

AA

A64m AL256m qn<co... in Haskell
data B :: forall l. TYPE ('BoxedRep l) where
 T :: B @l
источник

AA

A64m AL256m qn<co... in Haskell
по крайней мере такие страдания обсуждались при имплементации, сам я еще не пробовал!
источник

IO

I O in Haskell
Так вообще фиг знает что вылезает

    • Quantified type's kind mentions quantified type variable
       type: ‘forall (l :: Levity). B’
     where the body of the forall has this kind: ‘TYPE ('BoxedRep l)’
источник

AA

A64m AL256m qn<co... in Haskell
а нет, даже еще хуже емнип
источник

AA

A64m AL256m qn<co... in Haskell
это для ненулярных, а нулярные нормально вроде вообще не заработают
источник

AA

A64m AL256m qn<co... in Haskell
data B :: forall l. TYPE ('BoxedRep l) where
 T :: () -> B @l
источник

IO

I O in Haskell
Здравствуй кметтовский Lev

data B :: forall l. TYPE ('BoxedRep l) where
 T :: () ~ () => B @l
источник

AA

A64m AL256m qn<co... in Haskell
мое лицо когда левити полиморфизбм
() ~ ()
источник

a

adam in Haskell
и это работает?
источник

IO

I O in Haskell
Да
источник

a

adam in Haskell
моя кукуха передаёт вам тёплые до свидания
источник

AA

A64m AL256m qn<co... in Haskell
ну это как () -> токо при вызове пихать () не надо вручную!
источник

IO

I O in Haskell
И всякие

type Lev a = () ~ () => a
class Bounded (a :: TYPE r) where
 minBound, maxBound :: Lev a


работуют
источник

a

adam in Haskell
погоди, это Кметтом обсасывалось где-то?
источник

AA

A64m AL256m qn<co... in Haskell
наверное, я не видел
источник

IO

I O in Haskell
источник

a

adam in Haskell
последний коммит доставил, спасибо
источник