packages feed

singletons-1.0: tests/compile-and-dump/Singletons/TopLevelPatterns.ghc76.template

Promote/TopLevelPatterns.hs:0:0: Splicing declarations
    promote
      [d| data Bool = False | True
          data Foo = Bar Bool Bool |]
  ======>
    Promote/TopLevelPatterns.hs:(0,0)-(0,0)
    data Bool = False | True
    data Foo = Bar Bool Bool
    type BoolTyCtor = Bool
    type BoolTyCtorSym0 = BoolTyCtor
    type FalseSym0 = False
    type TrueSym0 = True
    type FooTyCtor = Foo
    type FooTyCtorSym0 = FooTyCtor
    data BarSym1 (l :: Bool) (l :: TyFun Bool Foo)
    data BarSym0 (k :: TyFun Bool (TyFun Bool Foo -> *))
    type instance Apply (BarSym1 a) a = Bar a a
    type instance Apply BarSym0 a = BarSym1 a
Promote/TopLevelPatterns.hs:0:0: Splicing declarations
    promote
      [d| otherwise :: Bool
          otherwise = True
          id :: a -> a
          id x = x
          not :: Bool -> Bool
          not True = False
          not False = True
          false_ = False
          f, g :: Bool -> Bool
          [f, g] = [not, id]
          h, i :: Bool -> Bool
          (h, i) = (f, g)
          j, k :: Bool
          (Bar j k) = Bar True (h False)
          l, m :: Bool
          [l, m] = [not True, id False] |]
  ======>
    Promote/TopLevelPatterns.hs:(0,0)-(0,0)
    otherwise :: Bool
    otherwise = True
    id :: forall a. a -> a
    id x = x
    not :: Bool -> Bool
    not True = False
    not False = True
    false_ = False
    f :: Bool -> Bool
    g :: Bool -> Bool
    [f, g] = [not, id]
    h :: Bool -> Bool
    i :: Bool -> Bool
    (h, i) = (f, g)
    j :: Bool
    k :: Bool
    Bar j k = Bar True (h False)
    l :: Bool
    m :: Bool
    [l, m] = [not True, id False]
    type Otherwise = TrueSym0
    type OtherwiseSym0 = Otherwise
    type False_ = FalseSym0
    type False_Sym0 = False_
    type F = Head '[NotSym0, IdSym0]
    type FSym0 = F
    type G = Head (Tail '[NotSym0, IdSym0])
    type GSym0 = G
    type H = Extract_0123456789 '(FSym0, GSym0)
    type HSym0 = H
    type I = Extract_0123456789 '(FSym0, GSym0)
    type ISym0 = I
    type family Extract_0123456789 (a :: GHC.Tuple.(,) a b) :: a
    type family Extract_0123456789 (a :: GHC.Tuple.(,) a b) :: b
    type instance Extract_0123456789 (GHC.Tuple.(,) a a) = a
    type instance Extract_0123456789 (GHC.Tuple.(,) a a) = a
    type J =
        Extract_0123456789 (Apply (Apply BarSym0 TrueSym0) (Apply HSym0 FalseSym0))
    type JSym0 = J
    type K =
        Extract_0123456789 (Apply (Apply BarSym0 TrueSym0) (Apply HSym0 FalseSym0))
    type KSym0 = K
    type family Extract_0123456789 (a :: Foo) :: Bool
    type family Extract_0123456789 (a :: Foo) :: Bool
    type instance Extract_0123456789 (Bar a a) = a
    type instance Extract_0123456789 (Bar a a) = a
    type L = Head '[Apply NotSym0 TrueSym0, Apply IdSym0 FalseSym0]
    type LSym0 = L
    type M =
        Head (Tail '[Apply NotSym0 TrueSym0, Apply IdSym0 FalseSym0])
    type MSym0 = M
    type family Id (a :: a) :: a
    type instance Id x = x
    data IdSym0 (k :: TyFun a a)
    type instance Apply IdSym0 a = Id a
    type family Not (a :: Bool) :: Bool
    type instance Not True = FalseSym0
    type instance Not False = TrueSym0
    data NotSym0 (k :: TyFun Bool Bool)
    type instance Apply NotSym0 a = Not a