singletons-2.7: tests/compile-and-dump/Singletons/BoxUnBox.golden
Singletons/BoxUnBox.hs:(0,0)-(0,0): Splicing declarations
singletons
[d| unBox :: Box a -> a
unBox (FBox a) = a
data Box a = FBox a |]
======>
data Box a = FBox a
unBox :: Box a -> a
unBox (FBox a) = a
type FBoxSym0 :: forall a. (~>) a (Box a)
data FBoxSym0 a0123456789876543210
where
FBoxSym0KindInference :: SameKind (Apply FBoxSym0 arg) (FBoxSym1 arg) =>
FBoxSym0 a0123456789876543210
type instance Apply FBoxSym0 a0123456789876543210 = FBoxSym1 a0123456789876543210
instance SuppressUnusedWarnings FBoxSym0 where
suppressUnusedWarnings = snd (((,) FBoxSym0KindInference) ())
type FBoxSym1 (a0123456789876543210 :: a) =
FBox a0123456789876543210 :: Box a
type UnBoxSym0 :: (~>) (Box a) a
data UnBoxSym0 a0123456789876543210
where
UnBoxSym0KindInference :: SameKind (Apply UnBoxSym0 arg) (UnBoxSym1 arg) =>
UnBoxSym0 a0123456789876543210
type instance Apply UnBoxSym0 a0123456789876543210 = UnBoxSym1 a0123456789876543210
instance SuppressUnusedWarnings UnBoxSym0 where
suppressUnusedWarnings = snd (((,) UnBoxSym0KindInference) ())
type UnBoxSym1 (a0123456789876543210 :: Box a) =
UnBox a0123456789876543210 :: a
type UnBox :: Box a -> a
type family UnBox a where
UnBox (FBox a) = a
sUnBox ::
forall a (t :: Box a). Sing t -> Sing (Apply UnBoxSym0 t :: a)
sUnBox (SFBox (sA :: Sing a)) = sA
instance SingI (UnBoxSym0 :: (~>) (Box a) a) where
sing = (singFun1 @UnBoxSym0) sUnBox
data SBox :: forall a. Box a -> GHC.Types.Type
where
SFBox :: forall a (n :: a). (Sing n) -> SBox (FBox n :: Box a)
type instance Sing @(Box a) = SBox
instance SingKind a => SingKind (Box a) where
type Demote (Box a) = Box (Demote a)
fromSing (SFBox b) = FBox (fromSing b)
toSing (FBox (b :: Demote a))
= case toSing b :: SomeSing a of {
SomeSing c -> SomeSing (SFBox c) }
instance SingI n => SingI (FBox (n :: a)) where
sing = SFBox sing
instance SingI (FBoxSym0 :: (~>) a (Box a)) where
sing = (singFun1 @FBoxSym0) SFBox