singletons 2.1 → 2.2
raw patch · 107 files changed
+364/−17082 lines, 107 filesdep ~base
Dependency ranges changed: base
Files
- CHANGES.md +11/−0
- README.md +10/−4
- singletons.cabal +7/−13
- src/Data/Promotion/Prelude.hs +2/−2
- src/Data/Promotion/TH.hs +1/−2
- src/Data/Singletons.hs +46/−45
- src/Data/Singletons/Decide.hs +4/−3
- src/Data/Singletons/Names.hs +5/−12
- src/Data/Singletons/Prelude/Enum.hs +1/−1
- src/Data/Singletons/Prelude/Eq.hs +3/−3
- src/Data/Singletons/Prelude/Instances.hs +1/−1
- src/Data/Singletons/Prelude/List.hs +2/−5
- src/Data/Singletons/Prelude/Maybe.hs +2/−6
- src/Data/Singletons/Prelude/Num.hs +3/−4
- src/Data/Singletons/Prelude/Ord.hs +1/−8
- src/Data/Singletons/Prelude/Tuple.hs +1/−4
- src/Data/Singletons/Promote.hs +1/−3
- src/Data/Singletons/Promote/Monad.hs +2/−8
- src/Data/Singletons/Single.hs +4/−16
- src/Data/Singletons/Single/Data.hs +4/−5
- src/Data/Singletons/Single/Eq.hs +2/−4
- src/Data/Singletons/Single/Monad.hs +2/−11
- src/Data/Singletons/Single/Type.hs +1/−1
- src/Data/Singletons/TH.hs +1/−1
- src/Data/Singletons/TypeLits/Internal.hs +15/−15
- src/Data/Singletons/TypeRepStar.hs +7/−6
- src/Data/Singletons/Util.hs +4/−10
- tests/SingletonsTestSuiteUtils.hs +3/−13
- tests/compile-and-dump/GradingClient/Database.ghc710.template +0/−4906
- tests/compile-and-dump/GradingClient/Database.ghc80.template +25/−29
- tests/compile-and-dump/GradingClient/Database.hs +1/−16
- tests/compile-and-dump/GradingClient/Main.ghc710.template +0/−162
- tests/compile-and-dump/InsertionSort/InsertionSortImp.ghc710.template +0/−234
- tests/compile-and-dump/InsertionSort/InsertionSortImp.ghc80.template +3/−3
- tests/compile-and-dump/InsertionSort/InsertionSortImp.hs +1/−17
- tests/compile-and-dump/Promote/Constructors.ghc710.template +0/−79
- tests/compile-and-dump/Promote/GenDefunSymbols.ghc710.template +0/−46
- tests/compile-and-dump/Promote/GenDefunSymbols.hs +0/−3
- tests/compile-and-dump/Promote/Newtypes.ghc710.template +0/−42
- tests/compile-and-dump/Promote/Newtypes.ghc80.template +1/−1
- tests/compile-and-dump/Promote/Pragmas.ghc710.template +0/−12
- tests/compile-and-dump/Promote/Prelude.ghc710.template +0/−17
- tests/compile-and-dump/Singletons/AsPattern.ghc710.template +0/−383
- tests/compile-and-dump/Singletons/AsPattern.ghc80.template +5/−5
- tests/compile-and-dump/Singletons/BadBoundedDeriving.ghc710.template +0/−3
- tests/compile-and-dump/Singletons/BadEnumDeriving.ghc710.template +0/−3
- tests/compile-and-dump/Singletons/BoundedDeriving.ghc710.template +0/−265
- tests/compile-and-dump/Singletons/BoundedDeriving.ghc80.template +22/−28
- tests/compile-and-dump/Singletons/BoundedDeriving.hs +0/−3
- tests/compile-and-dump/Singletons/BoxUnBox.ghc710.template +0/−49
- tests/compile-and-dump/Singletons/BoxUnBox.ghc80.template +3/−4
- tests/compile-and-dump/Singletons/CaseExpressions.ghc710.template +0/−352
- tests/compile-and-dump/Singletons/Classes.ghc710.template +0/−654
- tests/compile-and-dump/Singletons/Classes.ghc80.template +21/−21
- tests/compile-and-dump/Singletons/Classes2.ghc710.template +0/−115
- tests/compile-and-dump/Singletons/Classes2.ghc80.template +5/−5
- tests/compile-and-dump/Singletons/Contains.ghc710.template +0/−57
- tests/compile-and-dump/Singletons/Contains.ghc80.template +1/−1
- tests/compile-and-dump/Singletons/DataValues.ghc710.template +0/−106
- tests/compile-and-dump/Singletons/DataValues.ghc80.template +3/−7
- tests/compile-and-dump/Singletons/Empty.ghc710.template +0/−14
- tests/compile-and-dump/Singletons/Empty.ghc80.template +2/−2
- tests/compile-and-dump/Singletons/EnumDeriving.ghc710.template +0/−284
- tests/compile-and-dump/Singletons/EnumDeriving.ghc80.template +8/−8
- tests/compile-and-dump/Singletons/EqInstances.ghc710.template +0/−23
- tests/compile-and-dump/Singletons/EqInstances.ghc80.template +4/−4
- tests/compile-and-dump/Singletons/Error.ghc710.template +0/−34
- tests/compile-and-dump/Singletons/Fixity.ghc710.template +0/−74
- tests/compile-and-dump/Singletons/Fixity.ghc80.template +2/−2
- tests/compile-and-dump/Singletons/FunDeps.ghc710.template +0/−98
- tests/compile-and-dump/Singletons/FunDeps.ghc80.template +5/−8
- tests/compile-and-dump/Singletons/HigherOrder.ghc710.template +0/−547
- tests/compile-and-dump/Singletons/HigherOrder.ghc80.template +4/−6
- tests/compile-and-dump/Singletons/LambdaCase.ghc710.template +0/−294
- tests/compile-and-dump/Singletons/Lambdas.ghc710.template +0/−836
- tests/compile-and-dump/Singletons/Lambdas.ghc80.template +3/−7
- tests/compile-and-dump/Singletons/LambdasComprehensive.ghc710.template +0/−81
- tests/compile-and-dump/Singletons/LetStatements.ghc710.template +0/−1022
- tests/compile-and-dump/Singletons/Maybe.ghc710.template +0/−66
- tests/compile-and-dump/Singletons/Maybe.ghc80.template +6/−9
- tests/compile-and-dump/Singletons/Nat.ghc710.template +0/−141
- tests/compile-and-dump/Singletons/Nat.ghc80.template +6/−6
- tests/compile-and-dump/Singletons/Operators.ghc710.template +0/−122
- tests/compile-and-dump/Singletons/Operators.ghc80.template +3/−5
- tests/compile-and-dump/Singletons/OrdDeriving.ghc710.template +0/−2891
- tests/compile-and-dump/Singletons/OrdDeriving.ghc80.template +42/−56
- tests/compile-and-dump/Singletons/PatternMatching.ghc710.template +0/−593
- tests/compile-and-dump/Singletons/PatternMatching.ghc80.template +3/−7
- tests/compile-and-dump/Singletons/Records.ghc710.template +0/−61
- tests/compile-and-dump/Singletons/Records.ghc80.template +3/−6
- tests/compile-and-dump/Singletons/ReturnFunc.ghc710.template +0/−94
- tests/compile-and-dump/Singletons/Sections.ghc710.template +0/−142
- tests/compile-and-dump/Singletons/Star.ghc710.template +0/−587
- tests/compile-and-dump/Singletons/Star.ghc80.template +25/−39
- tests/compile-and-dump/Singletons/Star.hs +0/−3
- tests/compile-and-dump/Singletons/T124.ghc710.template +0/−37
- tests/compile-and-dump/Singletons/T136.ghc710.template +0/−262
- tests/compile-and-dump/Singletons/T136.ghc80.template +2/−2
- tests/compile-and-dump/Singletons/T136b.ghc710.template +0/−50
- tests/compile-and-dump/Singletons/T136b.ghc80.template +4/−4
- tests/compile-and-dump/Singletons/T29.ghc710.template +0/−127
- tests/compile-and-dump/Singletons/T33.ghc710.template +0/−34
- tests/compile-and-dump/Singletons/T54.ghc710.template +0/−59
- tests/compile-and-dump/Singletons/T78.ghc710.template +0/−42
- tests/compile-and-dump/Singletons/TopLevelPatterns.ghc710.template +0/−404
- tests/compile-and-dump/Singletons/TopLevelPatterns.ghc80.template +5/−6
- tests/compile-and-dump/Singletons/Undef.ghc710.template +0/−49
CHANGES.md view
@@ -1,6 +1,17 @@ Changelog for singletons project ================================ +2.2+---+* With `TypeInType`, we no longer kind `KProxy`. @int-index has very helpfully+removed the use of `KProxy` from `singletons`.++* Drop support for GHC 7.x.++* Remove `bugInGHC`. That function was intended to work around GHC's difficulty+in detecting exhaustiveness of GADT pattern matches. GHC 8 comes with a much+better exhaustiveness checker, and so this function is no longer necessary.+ 2.1 --- * Require `th-desugar` >= 1.6
README.md view
@@ -1,4 +1,4 @@-singletons 2.0+singletons 2.2 ============== [](https://travis-ci.org/goldfirere/singletons)@@ -33,7 +33,7 @@ Compatibility ------------- -The singletons library requires GHC 7.10.2 or greater. Any code that uses the+The singletons library requires GHC 8.0.1 or greater. Any code that uses the singleton generation primitives needs to enable a long list of GHC extensions. This list includes, but is not necessarily limited to, the following:@@ -43,8 +43,6 @@ * `TypeFamilies` * `GADTs` * `KindSignatures`-* `DataKinds`-* `PolyKinds` * `TypeOperators` * `FlexibleContexts` * `RankNTypes`@@ -52,6 +50,14 @@ * `FlexibleInstances` * `InstanceSigs` * `DefaultSignatures`+* `TypeInType`++You may also want++* `-Wno-redundant-constraints`++as the code that `singletons` generates uses redundant constraints, and there+seems to be no way, without a large library redesign, to avoid this. Modules for singleton types ---------------------------
singletons.cabal view
@@ -1,5 +1,5 @@ name: singletons-version: 2.1+version: 2.2 -- Remember to bump version in the Makefile as well cabal-version: >= 1.10 synopsis: A framework for generating singleton types@@ -9,17 +9,13 @@ maintainer: Richard Eisenberg <eir@cis.upenn.edu>, Jan Stolarek <jan.stolarek@p.lodz.pl> bug-reports: https://github.com/goldfirere/singletons/issues stability: experimental-tested-with: GHC >= 7.10.2+tested-with: GHC == 8.0.1 extra-source-files: README.md, CHANGES.md, tests/compile-and-dump/buildGoldenFiles.awk, tests/compile-and-dump/GradingClient/*.hs, tests/compile-and-dump/InsertionSort/*.hs, tests/compile-and-dump/Promote/*.hs, tests/compile-and-dump/Singletons/*.hs- tests/compile-and-dump/GradingClient/*.ghc710.template,- tests/compile-and-dump/InsertionSort/*.ghc710.template,- tests/compile-and-dump/Promote/*.ghc710.template,- tests/compile-and-dump/Singletons/*.ghc710.template tests/compile-and-dump/GradingClient/*.ghc80.template, tests/compile-and-dump/InsertionSort/*.ghc80.template, tests/compile-and-dump/Promote/*.ghc80.template,@@ -42,11 +38,11 @@ source-repository this type: git location: https://github.com/goldfirere/singletons.git- tag: v2.1+ tag: v2.2 library hs-source-dirs: src- build-depends: base >= 4.8.1.0 && < 5,+ build-depends: base >= 4.9 && < 5, mtl >= 2.1.2, template-haskell, containers >= 0.5,@@ -55,9 +51,7 @@ default-language: Haskell2010 other-extensions: TemplateHaskell -- TemplateHaskell must be listed in cabal file to work with- -- ghc7.8- if impl(ghc >= 7.11)- ghc-options: -Wno-redundant-constraints+ -- ghc7.8+ exposed-modules: Data.Singletons, Data.Singletons.CustomStar,@@ -111,7 +105,7 @@ Data.Singletons.TypeLits.Internal, Data.Singletons.Syntax - ghc-options: -Wall+ ghc-options: -Wall -Wno-redundant-constraints test-suite singletons-test-suite type: exitcode-stdio-1.0@@ -121,7 +115,7 @@ main-is: SingletonsTestSuite.hs other-modules: SingletonsTestSuiteUtils - build-depends: base >= 4.7.0.1 && < 5,+ build-depends: base >= 4.9 && < 5, filepath >= 1.3, process >= 1.1, tasty >= 0.6,
src/Data/Promotion/Prelude.hs view
@@ -71,7 +71,7 @@ Zip, Zip3, ZipWith, ZipWith3, Unzip, Unzip3, -- * Other datatypes- Proxy(..), KProxy(..),+ Proxy(..), -- * Defunctionalization symbols FalseSym0, TrueSym0,@@ -153,7 +153,7 @@ (:!!$), (:!!$$), (:!!$$$), ) where -import Data.Proxy ( Proxy(..), KProxy(..) )+import Data.Proxy ( Proxy(..) ) import Data.Promotion.Prelude.Base import Data.Promotion.Prelude.Bool import Data.Promotion.Prelude.Either
src/Data/Promotion/TH.hs view
@@ -40,7 +40,7 @@ PEq(..), If, (:&&), POrd(..), Any,- Proxy(..), KProxy(..), ThenCmp, Foldl,+ Proxy(..), ThenCmp, Foldl, Error, ErrorSym0, TrueSym0, FalseSym0,@@ -58,7 +58,6 @@ ) where -import Data.Proxy import Data.Singletons import Data.Singletons.Promote import Data.Singletons.Prelude.Instances
src/Data/Singletons.hs view
@@ -1,6 +1,7 @@ {-# LANGUAGE MagicHash, RankNTypes, PolyKinds, GADTs, DataKinds,- FlexibleContexts, TypeFamilies, TypeOperators,- UndecidableInstances #-}+ FlexibleContexts, FlexibleInstances,+ TypeFamilies, TypeOperators,+ UndecidableInstances, TypeInType #-} ----------------------------------------------------------------------------- -- |@@ -39,7 +40,8 @@ withSing, singThat, -- ** Defunctionalization- TyFun, TyCon1, TyCon2, TyCon3, TyCon4, TyCon5, TyCon6, TyCon7, TyCon8,+ TyFun, type (~>),+ TyCon1, TyCon2, TyCon3, TyCon4, TyCon5, TyCon6, TyCon7, TyCon8, Apply, type (@@), -- ** Defunctionalized singletons@@ -56,17 +58,17 @@ SingFunction6, SingFunction7, SingFunction8, -- * Auxiliary functions- bugInGHC,- KProxy(..)+ Proxy(..) ) where +import Data.Kind import Unsafe.Coerce-import Data.Proxy ( Proxy(..), KProxy(..) )+import Data.Proxy ( Proxy(..) ) import GHC.Exts ( Proxy# ) -- | Convenient synonym to refer to the kind of a type variable:--- @type KindOf (a :: k) = ('KProxy :: KProxy k)@-type KindOf (a :: k) = ('KProxy :: KProxy k)+-- @type KindOf (a :: k) = ('Proxy :: Proxy k)@+type KindOf (a :: k) = ('Proxy :: Proxy k) ---------------------------------------------------------------------- ---- Sing & friends --------------------------------------------------@@ -83,23 +85,23 @@ -- extension to use this method the way you want. sing :: Sing a --- | The 'SingKind' class is essentially a /kind/ class. It classifies all kinds+-- | The 'SingKind' class is a /kind/ class. It classifies all kinds -- for which singletons are defined. The class supports converting between a singleton -- type and the base (unrefined) type which it is built from.-class (kparam ~ 'KProxy) => SingKind (kparam :: KProxy k) where+class SingKind k where -- | Get a base type from a proxy for the promoted kind. For example,- -- @DemoteRep ('KProxy :: KProxy Bool)@ will be the type @Bool@.- type DemoteRep kparam :: *+ -- @DemoteRep Bool@ will be the type @Bool@.+ type DemoteRep k :: * -- | Convert a singleton to its unrefined version.- fromSing :: Sing (a :: k) -> DemoteRep kparam+ fromSing :: Sing (a :: k) -> DemoteRep k -- | Convert an unrefined type to an existentially-quantified singleton type.- toSing :: DemoteRep kparam -> SomeSing kparam+ toSing :: DemoteRep k -> SomeSing k -- | Convenient abbreviation for 'DemoteRep':--- @type Demote (a :: k) = DemoteRep ('KProxy :: KProxy k)@-type Demote (a :: k) = DemoteRep ('KProxy :: KProxy k)+-- @type Demote (a :: k) = DemoteRep k@+type Demote (a :: k) = DemoteRep k -- | An /existentially-quantified/ singleton. This type is useful when you want a -- singleton type, but there is no way of knowing, at compile-time, what the type@@ -111,8 +113,8 @@ -- > SomeSing sb -> {- fancy dependently-typed code with sb -} -- -- An example like the one above may be easier to write using 'withSomeSing'.-data SomeSing (kproxy :: KProxy k) where- SomeSing :: Sing (a :: k) -> SomeSing ('KProxy :: KProxy k)+data SomeSing k where+ SomeSing :: Sing (a :: k) -> SomeSing k ---------------------------------------------------------------------- ---- SingInstance ----------------------------------------------------@@ -142,30 +144,39 @@ -- applications have to be fully saturated. data TyFun :: * -> * -> * --- | Wrapper for converting the normal type-level arrow into a 'TyFun'.+-- | Something of kind `a ~> b` is a defunctionalized type function that is+-- not necessarily generative or injective.+type a ~> b = TyFun a b -> *+infixr 0 ~>++-- | Wrapper for converting the normal type-level arrow into a '~>'. -- For example, given: -- -- > data Nat = Zero | Succ Nat--- > type family Map (a :: TyFun a b -> *) (a :: [a]) :: [b]+-- > type family Map (a :: a ~> b) (a :: [a]) :: [b] -- > Map f '[] = '[] -- > Map f (x ': xs) = Apply f x ': Map f xs -- -- We can write: -- -- > Map (TyCon1 Succ) [Zero, Succ Zero]-data TyCon1 :: (k1 -> k2) -> (TyFun k1 k2) -> *+data TyCon1 :: (k1 -> k2) -> (k1 ~> k2) -- | Similar to 'TyCon1', but for two-parameter type constructors.-data TyCon2 :: (k1 -> k2 -> k3) -> TyFun k1 (TyFun k2 k3 -> *) -> *-data TyCon3 :: (k1 -> k2 -> k3 -> k4) -> TyFun k1 (TyFun k2 (TyFun k3 k4 -> *) -> *) -> *-data TyCon4 :: (k1 -> k2 -> k3 -> k4 -> k5) -> TyFun k1 (TyFun k2 (TyFun k3 (TyFun k4 k5 -> *) -> *) -> *) -> *-data TyCon5 :: (k1 -> k2 -> k3 -> k4 -> k5 -> k6) -> TyFun k1 (TyFun k2 (TyFun k3 (TyFun k4 (TyFun k5 k6 -> *) -> *) -> *) -> *) -> *-data TyCon6 :: (k1 -> k2 -> k3 -> k4 -> k5 -> k6 -> k7) -> TyFun k1 (TyFun k2 (TyFun k3 (TyFun k4 (TyFun k5 (TyFun k6 k7 -> *) -> *) -> *) -> *) -> *) -> *-data TyCon7 :: (k1 -> k2 -> k3 -> k4 -> k5 -> k6 -> k7 -> k8) -> TyFun k1 (TyFun k2 (TyFun k3 (TyFun k4 (TyFun k5 (TyFun k6 (TyFun k7 k8 -> *) -> *) -> *) -> *) -> *) -> *) -> *-data TyCon8 :: (k1 -> k2 -> k3 -> k4 -> k5 -> k6 -> k7 -> k8 -> k9) -> TyFun k1 (TyFun k2 (TyFun k3 (TyFun k4 (TyFun k5 (TyFun k6 (TyFun k7 (TyFun k8 k9 -> *) -> *) -> *) -> *) -> *) -> *) -> *) -> *+data TyCon2 :: (k1 -> k2 -> k3) -> (k1 ~> k2 ~> k3)+data TyCon3 :: (k1 -> k2 -> k3 -> k4) -> (k1 ~> k2 ~> k3 ~> k4)+data TyCon4 :: (k1 -> k2 -> k3 -> k4 -> k5) -> (k1 ~> k2 ~> k3 ~> k4 ~> k5)+data TyCon5 :: (k1 -> k2 -> k3 -> k4 -> k5 -> k6)+ -> (k1 ~> k2 ~> k3 ~> k4 ~> k5 ~> k6)+data TyCon6 :: (k1 -> k2 -> k3 -> k4 -> k5 -> k6 -> k7)+ -> (k1 ~> k2 ~> k3 ~> k4 ~> k5 ~> k6 ~> k7)+data TyCon7 :: (k1 -> k2 -> k3 -> k4 -> k5 -> k6 -> k7 -> k8)+ -> (k1 ~> k2 ~> k3 ~> k4 ~> k5 ~> k6 ~> k7 ~> k8)+data TyCon8 :: (k1 -> k2 -> k3 -> k4 -> k5 -> k6 -> k7 -> k8 -> k9)+ -> (k1 ~> k2 ~> k3 ~> k4 ~> k5 ~> k6 ~> k7 ~> k8 ~> k9) -- | Type level function application-type family Apply (f :: TyFun k1 k2 -> *) (x :: k1) :: k2+type family Apply (f :: k1 ~> k2) (x :: k1) :: k2 type instance Apply (TyCon1 f) x = f x type instance Apply (TyCon2 f) x = TyCon1 (f x) type instance Apply (TyCon3 f) x = TyCon2 (f x)@@ -183,13 +194,11 @@ ---- Defunctionalized Sing instance and utilities -------------------- ---------------------------------------------------------------------- -newtype instance Sing (f :: TyFun k1 k2 -> *) =+newtype instance Sing (f :: k1 ~> k2) = SLambda { applySing :: forall t. Sing t -> Sing (f @@ t) } -instance (SingKind ('KProxy :: KProxy k1), SingKind ('KProxy :: KProxy k2))- => SingKind ('KProxy :: KProxy (TyFun k1 k2 -> *)) where- type DemoteRep ('KProxy :: KProxy (TyFun k1 k2 -> *)) =- DemoteRep ('KProxy :: KProxy k1) -> DemoteRep ('KProxy :: KProxy k2)+instance (SingKind k1, SingKind k2) => SingKind (k1 ~> k2) where+ type DemoteRep (k1 ~> k2) = DemoteRep k1 -> DemoteRep k2 fromSing sFun x = withSomeSing x (fromSing . applySing sFun) toSing _ = error "Cannot create existentially-quantified singleton functions." @@ -274,8 +283,8 @@ -- | Convert a normal datatype (like 'Bool') to a singleton for that datatype, -- passing it into a continuation.-withSomeSing :: SingKind ('KProxy :: KProxy k)- => DemoteRep ('KProxy :: KProxy k) -- ^ The original datatype+withSomeSing :: SingKind k+ => DemoteRep k -- ^ The original datatype -> (forall (a :: k). Sing a -> r) -- ^ Function expecting a singleton -> r withSomeSing x f =@@ -293,7 +302,7 @@ -- property. If the singleton does not satisfy the property, then the function -- returns 'Nothing'. The property is expressed in terms of the underlying -- representation of the singleton.-singThat :: forall (a :: k). (SingKind ('KProxy :: KProxy k), SingI a)+singThat :: forall (a :: k). (SingKind k, SingI a) => (Demote a -> Bool) -> Maybe (Sing a) singThat p = withSing $ \x -> if p (fromSing x) then Just x else Nothing @@ -304,11 +313,3 @@ -- | Allows creation of a singleton when a @proxy#@ is at hand. singByProxy# :: SingI a => Proxy# a -> Sing a singByProxy# _ = sing---- | GHC 7.8 sometimes warns about incomplete pattern matches when no such--- patterns are possible, due to GADT constraints.--- See the bug report at <https://ghc.haskell.org/trac/ghc/ticket/3927>.--- In such cases, it's useful to have a catch-all pattern that then has--- 'bugInGHC' as its right-hand side.-bugInGHC :: forall a. a-bugInGHC = error "Bug encountered in GHC -- this should never happen"
src/Data/Singletons/Decide.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE RankNTypes, PolyKinds, DataKinds, TypeOperators,+{-# LANGUAGE RankNTypes, PolyKinds, DataKinds, TypeOperators, TypeInType, TypeFamilies, FlexibleContexts, UndecidableInstances, GADTs #-} {-# OPTIONS_GHC -fno-warn-orphans #-} @@ -23,6 +23,7 @@ (:~:)(..), Void, Refuted, Decision(..) ) where +import Data.Kind import Data.Singletons import Data.Type.Equality import Data.Void@@ -44,11 +45,11 @@ -- | Members of the 'SDecide' "kind" class support decidable equality. Instances -- of this class are generated alongside singleton definitions for datatypes that -- derive an 'Eq' instance.-class (kparam ~ 'KProxy) => SDecide (kparam :: KProxy k) where+class SDecide k where -- | Compute a proof or disproof of equality, given two singletons. (%~) :: forall (a :: k) (b :: k). Sing a -> Sing b -> Decision (a :~: b) -instance SDecide ('KProxy :: KProxy k) => TestEquality (Sing :: k -> *) where+instance SDecide k => TestEquality (Sing :: k -> Type) where testEquality a b = case a %~ b of Proved Refl -> Just Refl
src/Data/Singletons/Names.hs view
@@ -29,7 +29,7 @@ eqName, ordName, boundedName, orderingName, singFamilyName, singIName, singMethName, demoteRepName, singKindClassName, sEqClassName, sEqMethName, sconsName, snilName,- sIfName, kProxyDataName, kProxyTypeName, proxyTypeName, proxyDataName,+ sIfName, proxyTypeName, proxyDataName, someSingTypeName, someSingDataName, sListName, sDecideClassName, sDecideMethName, provedName, disprovedName, reflName, toSingName, fromSingName,@@ -73,8 +73,6 @@ sIfName = mk_name_v "Data.Singletons.Prelude.Bool" "sIf" sconsName = mk_name_d "Data.Singletons.Prelude.Instances" "SCons" snilName = mk_name_d "Data.Singletons.Prelude.Instances" "SNil"-kProxyDataName = 'KProxy-kProxyTypeName = ''KProxy someSingTypeName = ''SomeSing someSingDataName = 'SomeSing proxyTypeName = ''Proxy@@ -172,11 +170,6 @@ promoteClassName :: Name -> Name promoteClassName = prefixUCName "P" "#" --- produce the silly type class used to store the type variables for--- a class-classTvsName :: Name -> Name-classTvsName = suffixName "TyVars" "^^^"- mkTyName :: Quasi q => Name -> q Name mkTyName tmName = do let nameStr = nameBase tmName@@ -223,7 +216,7 @@ | otherwise = (prefixLCName "s" "%") $ upcase n kindParam :: DKind -> DType-kindParam k = DSigT (DConT kProxyDataName) (DConT kProxyTypeName `DAppT` k)+kindParam k = DSigT (DConT proxyDataName) (DConT proxyTypeName `DAppT` k) proxyFor :: DType -> DExp proxyFor ty = DSigE (DConE proxyDataName) (DAppT (DConT proxyTypeName) ty)@@ -232,7 +225,7 @@ singFamily = DConT singFamilyName singKindConstraint :: DKind -> DPred-singKindConstraint k = DAppPr (DConPr singKindClassName) (kindParam k)+singKindConstraint = DAppPr (DConPr singKindClassName) demote :: DType demote = DConT demoteRepName@@ -259,6 +252,6 @@ -> q ([DTyVarBndr], DCxt) mkKProxies ns = do kproxies <- mapM (const $ qNewName "kproxy") ns- return ( zipWith (\kp kv -> DKindedTV kp (DConT kProxyTypeName `DAppT` DVarT kv))+ return ( zipWith (\kp kv -> DKindedTV kp (DConT proxyTypeName `DAppT` DVarT kv)) kproxies ns- , map (\kp -> mkEqPred (DVarT kp) (DConT kProxyDataName)) kproxies )+ , map (\kp -> mkEqPred (DVarT kp) (DConT proxyDataName)) kproxies )
src/Data/Singletons/Prelude/Enum.hs view
@@ -1,6 +1,6 @@ {-# LANGUAGE TemplateHaskell, DataKinds, PolyKinds, ScopedTypeVariables, TypeFamilies, TypeOperators, GADTs, UndecidableInstances,- FlexibleContexts, DefaultSignatures, BangPatterns,+ FlexibleContexts, DefaultSignatures, BangPatterns, TypeInType, InstanceSigs #-} -----------------------------------------------------------------------------
src/Data/Singletons/Prelude/Eq.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE TypeOperators, DataKinds, PolyKinds, TypeFamilies,+{-# LANGUAGE TypeOperators, DataKinds, PolyKinds, TypeFamilies, TypeInType, RankNTypes, FlexibleContexts, TemplateHaskell, UndecidableInstances, GADTs, DefaultSignatures #-} @@ -33,7 +33,7 @@ -- | The promoted analogue of 'Eq'. If you supply no definition for '(:==)', -- then it defaults to a use of '(==)', from @Data.Type.Equality@.-class kproxy ~ 'KProxy => PEq (kproxy :: KProxy a) where+class kproxy ~ 'Proxy => PEq (kproxy :: Proxy a) where type (:==) (x :: a) (y :: a) :: Bool type (:/=) (x :: a) (y :: a) :: Bool @@ -47,7 +47,7 @@ -- | The singleton analogue of 'Eq'. Unlike the definition for 'Eq', it is required -- that instances define a body for '(%:==)'. You may also supply a body for '(%:/=)'.-class (kparam ~ 'KProxy) => SEq (kparam :: KProxy k) where+class SEq k where -- | Boolean equality on singletons (%:==) :: forall (a :: k) (b :: k). Sing a -> Sing b -> Sing (a :== b) infix 4 %:==
src/Data/Singletons/Prelude/Instances.hs view
@@ -8,7 +8,7 @@ -} -{-# LANGUAGE RankNTypes, DataKinds, PolyKinds, GADTs, TypeFamilies,+{-# LANGUAGE RankNTypes, TypeInType, GADTs, TypeFamilies, FlexibleContexts, TemplateHaskell, ScopedTypeVariables, UndecidableInstances, TypeOperators, FlexibleInstances #-} {-# OPTIONS_GHC -fno-warn-orphans #-}
src/Data/Singletons/Prelude/List.hs view
@@ -1,10 +1,7 @@-{-# LANGUAGE TypeOperators, DataKinds, PolyKinds, TypeFamilies,+{-# LANGUAGE TypeOperators, DataKinds, PolyKinds, TypeFamilies, TypeInType, TemplateHaskell, GADTs, UndecidableInstances, RankNTypes,- ScopedTypeVariables, FlexibleContexts, CPP #-}+ ScopedTypeVariables, FlexibleContexts #-} {-# OPTIONS_GHC -O0 #-}-#if __GLASGOW_HASKELL__ >= 711-{-# LANGUAGE TypeInType #-}-#endif ----------------------------------------------------------------------------- -- |
src/Data/Singletons/Prelude/Maybe.hs view
@@ -1,9 +1,5 @@-{-# LANGUAGE TemplateHaskell, ScopedTypeVariables, TypeFamilies,- DataKinds, PolyKinds, UndecidableInstances, GADTs,- RankNTypes, CPP #-}-#if __GLASGOW_HASKELL__ >= 711-{-# LANGUAGE TypeInType #-}-#endif+{-# LANGUAGE TemplateHaskell, ScopedTypeVariables, TypeFamilies, TypeInType,+ DataKinds, PolyKinds, UndecidableInstances, GADTs, RankNTypes #-} ----------------------------------------------------------------------------- -- |
src/Data/Singletons/Prelude/Num.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE TemplateHaskell, PolyKinds, DataKinds, TypeFamilies,+{-# LANGUAGE TemplateHaskell, PolyKinds, DataKinds, TypeFamilies, TypeInType, TypeOperators, GADTs, ScopedTypeVariables, UndecidableInstances, DefaultSignatures, FlexibleContexts #-}@@ -36,7 +36,6 @@ import Data.Singletons.TypeLits.Internal import Data.Singletons.Decide import GHC.TypeLits-import Data.Proxy import Unsafe.Coerce $(singletonsOnly [d|@@ -73,7 +72,7 @@ SignumNat 0 = 0 SignumNat x = 1 -instance PNum ('KProxy :: KProxy Nat) where+instance PNum ('Proxy :: Proxy Nat) where type a :+ b = a + b type a :- b = a - b type a :* b = a * b@@ -83,7 +82,7 @@ type FromInteger a = a -- SNum instance-instance SNum ('KProxy :: KProxy Nat) where+instance SNum Nat where sa %:+ sb = let a = fromSing sa b = fromSing sb
src/Data/Singletons/Prelude/Ord.hs view
@@ -1,9 +1,6 @@ {-# LANGUAGE TemplateHaskell, DataKinds, PolyKinds, ScopedTypeVariables, TypeFamilies, TypeOperators, GADTs, UndecidableInstances,- FlexibleContexts, DefaultSignatures, InstanceSigs, CPP #-}-#if __GLASGOW_HASKELL__ >= 711-{-# LANGUAGE TypeInType #-}-#endif+ FlexibleContexts, DefaultSignatures, InstanceSigs, TypeInType #-} ----------------------------------------------------------------------------- -- |@@ -44,10 +41,6 @@ import Data.Singletons.Prelude.Eq import Data.Singletons.Prelude.Instances import Data.Singletons.Util--#if __GLASGOW_HASKELL__ < 711-import Data.Singletons ( Sing )-#endif $(singletonsOnly [d| class (Eq a) => Ord a where
src/Data/Singletons/Prelude/Tuple.hs view
@@ -1,8 +1,5 @@ {-# LANGUAGE TemplateHaskell, ScopedTypeVariables, DataKinds, PolyKinds,- RankNTypes, TypeFamilies, GADTs, UndecidableInstances, CPP #-}-#if __GLASGOW_HASKELL__ >= 711-{-# LANGUAGE TypeInType #-}-#endif+ RankNTypes, TypeFamilies, GADTs, UndecidableInstances, TypeInType #-} ----------------------------------------------------------------------------- -- |
src/Data/Singletons/Promote.hs view
@@ -7,7 +7,7 @@ type level. It is an internal module to the singletons package. -} -{-# LANGUAGE TemplateHaskell, MultiWayIf, LambdaCase, TupleSections, CPP #-}+{-# LANGUAGE TemplateHaskell, MultiWayIf, LambdaCase, TupleSections #-} module Data.Singletons.Promote where @@ -340,12 +340,10 @@ first:_ | not (isHsLetter first) -> "TFHelper" alpha -> alpha family_args-#if __GLASGOW_HASKELL__ >= 711 -- GHC 8 requires bare tyvars to the left of a type family default | Nothing <- m_subst = map DVarT meth_arg_tvs | otherwise-#endif = zipWith (DSigT . DVarT) meth_arg_tvs meth_arg_kis' helperName <- newUniqueName helperNameBase emitDecs [DClosedTypeFamilyD (DTypeFamilyHead
src/Data/Singletons/Promote/Monad.hs view
@@ -10,7 +10,7 @@ -} {-# LANGUAGE GeneralizedNewtypeDeriving, StandaloneDeriving,- FlexibleContexts, TypeFamilies, KindSignatures, CPP #-}+ FlexibleContexts, TypeFamilies, KindSignatures #-} module Data.Singletons.Promote.Monad ( PrM, promoteM, promoteM_, promoteMDecs, VarPromotions,@@ -26,10 +26,7 @@ import Language.Haskell.TH.Desugar import Data.Singletons.Names import Data.Singletons.Syntax--#if __GLASGOW_HASKELL__ >= 711 import Control.Monad.Fail ( MonadFail )-#endif type LetExpansions = Map Name DType -- from **term-level** name @@ -49,10 +46,7 @@ newtype PrM a = PrM (ReaderT PrEnv (WriterT [DDec] Q) a) deriving ( Functor, Applicative, Monad, Quasi , MonadReader PrEnv, MonadWriter [DDec]-#if __GLASGOW_HASKELL__ >= 711- , MonadFail-#endif- )+ , MonadFail ) instance DsMonad PrM where localDeclarations = asks pr_local_decls
src/Data/Singletons/Single.hs view
@@ -264,10 +264,9 @@ (Map.toList default_defns) let fixities' = map (uncurry singInfixDecl) fixities cls_cxt' <- mapM singPred cls_cxt- (kproxies, kproxy_pred) <- mkKProxies (map extractTvbName cls_tvbs)-- return $ DClassD (cls_cxt' ++ kproxy_pred)- (singClassName cls_name) kproxies+ return $ DClassD cls_cxt'+ (singClassName cls_name)+ cls_tvbs cls_fundeps -- they are fine without modification (map DLetDec (sing_sigs ++ sing_meths ++ fixities') ++ default_sigs) where@@ -298,7 +297,7 @@ meths <- concatMapM (uncurry sing_meth) ann_meths return (DInstanceD Nothing cxt'- (foldl DAppT (DConT s_inst_name) (map kindParam inst_kis))+ (foldl DAppT (DConT s_inst_name) inst_kis) meths) where@@ -309,19 +308,8 @@ mb_s_info <- dsReify (singValName name) (s_ty, tyvar_names, m_res_ki) <- case mb_s_info of Just (DVarI _ (DForallT cls_kproxy_tvbs _cls_pred s_ty) _) -> do-#if __GLASGOW_HASKELL__ >= 711 -- GHC 8 quantifies over the kind vars explicitly let class_kvs = [ class_kv | DKindedTV class_kv DStarT <- cls_kproxy_tvbs ]-#else- let class_kvs = map extract_kv cls_kproxy_tvbs- extract_kv (DKindedTV _kproxyVar (DConT _kproxyTy `DAppT` DVarT kv)) = kv- extract_kv k = error $ "sing_meth cannot extract a kind variable" ++- "\n" ++ show k ++- "\n" ++ show name ++- "\n" ++ show (singValName name) ++- "\n" ++ show mb_s_info-#endif- (sing_tvbs, _pred, _args, res_ty) = unravel s_ty inst_kis <- mapM promoteType inst_tys
src/Data/Singletons/Single/Data.hs view
@@ -37,12 +37,11 @@ let singKindInst = DInstanceD Nothing (map (singKindConstraint . DVarT) tvbNames)- (DAppT (DConT singKindClassName)- (kindParam k))+ (DAppT (DConT singKindClassName) k) [ DTySynInstD demoteRepName $ DTySynEqn- [kindParam k]+ [k] (foldType (DConT name)- (map (DAppT demote . kindParam . DVarT) tvbNames))+ (map (DAppT demote . DVarT) tvbNames)) , DLetDec $ DFunD fromSingName (fromSingClauses `orIfEmpty` emptyMethod aName) , DLetDec $ DFunD toSingName (toSingClauses `orIfEmpty` emptyMethod aName) ] @@ -98,7 +97,7 @@ mkRecursiveCall :: Name -> DKind -> DExp mkRecursiveCall var_name ki = DSigE (DAppE (DVarE toSingName) (DVarE var_name))- (DAppT (DConT someSingTypeName) (kindParam ki))+ (DAppT (DConT someSingTypeName) ki) emptyMethod :: Name -> [DClause] emptyMethod n = [DClause [DVarPa n] (DCaseE (DVarE n) emptyMatches)]
src/Data/Singletons/Single/Eq.hs view
@@ -30,10 +30,8 @@ then mkEmptyMethClauses else mapM mkMeth ctorPairs return $ DInstanceD Nothing- (map (\kvar -> (DConPr className) `DAppPr` kindParam kvar)- (getKindVars k))- (DAppT (DConT className)- (kindParam k))+ (map (DAppPr (DConPr className)) (getKindVars k))+ (DAppT (DConT className) k) [DLetDec $ DFunD methName methClauses] where getKindVars :: DKind -> [DKind] getKindVars (DVarT x) = [DVarT x]
src/Data/Singletons/Single/Monad.hs view
@@ -8,8 +8,7 @@ The SgM monad allows reading from a SgEnv environment and is wrapped around a Q. -} -{-# LANGUAGE GeneralizedNewtypeDeriving, ParallelListComp,- TemplateHaskell, CPP #-}+{-# LANGUAGE GeneralizedNewtypeDeriving, ParallelListComp, TemplateHaskell #-} module Data.Singletons.Single.Monad ( SgM, bindLets, bindTyVars, bindTyVarsEq, lookupVarE, lookupConE,@@ -30,10 +29,7 @@ import Control.Monad.Reader import Control.Monad.Writer import Control.Applicative--#if __GLASGOW_HASKELL__ >= 711 import Control.Monad.Fail-#endif -- environment during singling data SgEnv =@@ -50,10 +46,7 @@ newtype SgM a = SgM (ReaderT SgEnv (WriterT [DDec] Q) a) deriving ( Functor, Applicative, Monad , MonadReader SgEnv, MonadWriter [DDec]-#if __GLASGOW_HASKELL__ >= 711- , MonadFail-#endif- )+ , MonadFail ) liftSgM :: Q a -> SgM a liftSgM = SgM . lift . lift@@ -75,12 +68,10 @@ qGetQ = liftSgM qGetQ qPutQ = liftSgM `comp1` qPutQ -#if __GLASGOW_HASKELL__ >= 711 qReifyFixity = liftSgM `comp1` qReifyFixity qReifyConStrictness = liftSgM `comp1` qReifyConStrictness qIsExtEnabled = liftSgM `comp1` qIsExtEnabled qExtsEnabled = liftSgM qExtsEnabled-#endif qRecover (SgM handler) (SgM body) = do env <- ask
src/Data/Singletons/Single/Type.hs view
@@ -51,5 +51,5 @@ | otherwise = do kis <- mapM promoteType ctx let sName = singClassName n- return $ foldl DAppPr (DConPr sName) (map kindParam kis)+ return $ foldl DAppPr (DConPr sName) kis singPredRec _ctx DWildCardPr = return DWildCardPr -- it just might work
src/Data/Singletons/TH.hs view
@@ -54,7 +54,7 @@ POrd(..), SOrd(..), ThenCmp, sThenCmp, Foldl, sFoldl, Any, SDecide(..), (:~:)(..), Void, Refuted, Decision(..),- Proxy(..), KProxy(..), SomeSing(..),+ Proxy(..), SomeSing(..), Error, ErrorSym0, TrueSym0, FalseSym0,
src/Data/Singletons/TypeLits/Internal.hs view
@@ -16,7 +16,7 @@ {-# LANGUAGE PolyKinds, DataKinds, TypeFamilies, FlexibleInstances, UndecidableInstances, ScopedTypeVariables, RankNTypes, GADTs, FlexibleContexts, TypeOperators, ConstraintKinds,- TemplateHaskell #-}+ TypeInType, TemplateHaskell #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module Data.Singletons.TypeLits.Internal (@@ -50,8 +50,8 @@ instance KnownNat n => SingI n where sing = SNat -instance SingKind ('KProxy :: KProxy Nat) where- type DemoteRep ('KProxy :: KProxy Nat) = Integer+instance SingKind Nat where+ type DemoteRep Nat = Integer fromSing (SNat :: Sing n) = natVal (Proxy :: Proxy n) toSing n = case someNatVal n of Just (SomeNat (_ :: Proxy n)) -> SomeSing (SNat :: Sing n)@@ -62,14 +62,14 @@ instance KnownSymbol n => SingI n where sing = SSym -instance SingKind ('KProxy :: KProxy Symbol) where- type DemoteRep ('KProxy :: KProxy Symbol) = String+instance SingKind Symbol where+ type DemoteRep Symbol = String fromSing (SSym :: Sing n) = symbolVal (Proxy :: Proxy n) toSing s = case someSymbolVal s of SomeSymbol (_ :: Proxy n) -> SomeSing (SSym :: Sing n) -- SDecide instances:-instance SDecide ('KProxy :: KProxy Nat) where+instance SDecide Nat where (SNat :: Sing n) %~ (SNat :: Sing m) | natVal (Proxy :: Proxy n) == natVal (Proxy :: Proxy m) = Proved $ unsafeCoerce Refl@@ -77,7 +77,7 @@ = Disproved (\_ -> error errStr) where errStr = "Broken Nat singletons" -instance SDecide ('KProxy :: KProxy Symbol) where+instance SDecide Symbol where (SSym :: Sing n) %~ (SSym :: Sing m) | symbolVal (Proxy :: Proxy n) == symbolVal (Proxy :: Proxy m) = Proved $ unsafeCoerce Refl@@ -86,27 +86,27 @@ where errStr = "Broken Symbol singletons" -- PEq instances-instance PEq ('KProxy :: KProxy Nat) where+instance PEq ('Proxy :: Proxy Nat) where type (a :: Nat) :== (b :: Nat) = a == b-instance PEq ('KProxy :: KProxy Symbol) where+instance PEq ('Proxy :: Proxy Symbol) where type (a :: Symbol) :== (b :: Symbol) = a == b -- need SEq instances for TypeLits kinds-instance SEq ('KProxy :: KProxy Nat) where+instance SEq Nat where a %:== b | fromSing a == fromSing b = unsafeCoerce STrue | otherwise = unsafeCoerce SFalse -instance SEq ('KProxy :: KProxy Symbol) where+instance SEq Symbol where a %:== b | fromSing a == fromSing b = unsafeCoerce STrue | otherwise = unsafeCoerce SFalse -- POrd instances-instance POrd ('KProxy :: KProxy Nat) where+instance POrd ('Proxy :: Proxy Nat) where type (a :: Nat) `Compare` (b :: Nat) = a `TL.CmpNat` b -instance POrd ('KProxy :: KProxy Symbol) where+instance POrd ('Proxy :: Proxy Symbol) where type (a :: Symbol) `Compare` (b :: Symbol) = a `TL.CmpSymbol` b -- | Kind-restricted synonym for 'Sing' for @Nat@s@@ -116,13 +116,13 @@ type SSymbol (x :: Symbol) = Sing x -- SOrd instances-instance SOrd ('KProxy :: KProxy Nat) where+instance SOrd Nat where a `sCompare` b = case fromSing a `compare` fromSing b of LT -> unsafeCoerce SLT EQ -> unsafeCoerce SEQ GT -> unsafeCoerce SGT -instance SOrd ('KProxy :: KProxy Symbol) where+instance SOrd Symbol where a `sCompare` b = case fromSing a `compare` fromSing b of LT -> unsafeCoerce SLT EQ -> unsafeCoerce SEQ
src/Data/Singletons/TypeRepStar.hs view
@@ -36,6 +36,7 @@ import Unsafe.Coerce import Data.Singletons.Decide +import Data.Kind import GHC.Exts ( Proxy# ) import Data.Type.Coercion import Data.Type.Equality@@ -45,15 +46,15 @@ instance Typeable a => SingI (a :: *) where sing = STypeRep-instance SingKind ('KProxy :: KProxy *) where- type DemoteRep ('KProxy :: KProxy *) = TypeRep+instance SingKind Type where+ type DemoteRep Type = TypeRep fromSing (STypeRep :: Sing a) = typeOf (undefined :: a) toSing = dirty_mk_STypeRep -instance PEq ('KProxy :: KProxy *) where+instance PEq ('Proxy :: Proxy Type) where type (a :: *) :== (b :: *) = a == b -instance SEq ('KProxy :: KProxy *) where+instance SEq Type where (STypeRep :: Sing a) %:== (STypeRep :: Sing b) = case (eqT :: Maybe (a :~: b)) of Just Refl -> STrue@@ -61,7 +62,7 @@ -- the Data.Typeable interface isn't strong enough -- to enable us to define this without unsafeCoerce -instance SDecide ('KProxy :: KProxy *) where+instance SDecide Type where (STypeRep :: Sing a) %~ (STypeRep :: Sing b) = case (eqT :: Maybe (a :~: b)) of Just Refl -> Proved Refl@@ -77,7 +78,7 @@ -- everything below here is private and dirty. Don't look! newtype DI = Don'tInstantiate (forall a. Typeable a => Sing a)-dirty_mk_STypeRep :: TypeRep -> SomeSing ('KProxy :: KProxy *)+dirty_mk_STypeRep :: TypeRep -> SomeSing * dirty_mk_STypeRep rep = let justLikeTypeable :: Proxy# a -> TypeRep justLikeTypeable _ = rep
src/Data/Singletons/Util.hs view
@@ -11,7 +11,7 @@ TemplateHaskell, GeneralizedNewtypeDeriving, MultiParamTypeClasses, StandaloneDeriving, UndecidableInstances, MagicHash, UnboxedTuples,- LambdaCase, CPP, NoMonomorphismRestriction #-}+ LambdaCase, NoMonomorphismRestriction #-} module Data.Singletons.Util where @@ -23,20 +23,19 @@ import Control.Monad.Writer hiding ( mapM ) import Control.Monad.Reader hiding ( mapM ) import qualified Data.Map as Map+import Data.List.NonEmpty (NonEmpty) import Data.Map ( Map ) import Data.Foldable import Data.Traversable import Data.Generics--#if __GLASGOW_HASKELL__ >= 711 import Control.Monad.Fail ( MonadFail )-#endif -- The list of types that singletons processes by default basicTypes :: [Name] basicTypes = [ ''Maybe , ''[] , ''Either+ , ''NonEmpty ] ++ boundedBasicTypes boundedBasicTypes :: [Name]@@ -346,10 +345,7 @@ newtype QWithAux m q a = QWA { runQWA :: WriterT m q a } deriving ( Functor, Applicative, Monad, MonadTrans , MonadWriter m, MonadReader r-#if __GLASGOW_HASKELL__ >= 711- , MonadFail-#endif- )+ , MonadFail ) -- make a Quasi instance for easy lifting instance (Quasi q, Monoid m) => Quasi (QWithAux m q) where@@ -369,12 +365,10 @@ qGetQ = lift qGetQ qPutQ = lift `comp1` qPutQ -#if __GLASGOW_HASKELL__ >= 711 qReifyFixity = lift `comp1` qReifyFixity qReifyConStrictness = lift `comp1` qReifyConStrictness qIsExtEnabled = lift `comp1` qIsExtEnabled qExtsEnabled = lift qExtsEnabled-#endif qRecover exp handler = do (result, aux) <- lift $ qRecover (evalForPair exp) (evalForPair handler)
tests/SingletonsTestSuiteUtils.hs view
@@ -51,11 +51,7 @@ includePath = "../../dist/build" ghcVersion :: String-#if __GLASGOW_HASKELL__ >= 711 ghcVersion = ".ghc80"-#else-ghcVersion = ".ghc710"-#endif -- The mtl package made an incompatible change between 2.1.3.1 and 2.2.1. Because -- test files are compiled outside of the cabal infrastructure, we need to check@@ -92,11 +88,7 @@ ghcOpts = extraOpts ++ [ "-v0" , "-c"-#if __GLASGOW_HASKELL__ < 711- , "-this-package-key " ++ CURRENT_PACKAGE_KEY -- See Note [-this-package-key hack]-#else- , "-this-unit-id " ++ CURRENT_PACKAGE_KEY-#endif+ , "-this-unit-id " ++ CURRENT_PACKAGE_KEY -- See Note [-this-unit-id hack] , "-ddump-splices" , "-dsuppress-uniques" , "-fforce-recomp"@@ -123,17 +115,15 @@ , "-XInstanceSigs" , "-XDefaultSignatures" , "-XCPP"-#if __GLASGOW_HASKELL__ >= 711 , "-XTypeInType"-#endif ] --- Note [-this-package-key hack]+-- Note [-this-unit-id hack] -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- -- We want to avoid installing singletons package before running the -- testsuite, because in this way we prevent double compilation of the--- library. To do this we pass -this-package-key option to GHC to convince+-- library. To do this we pass -this-unit-id option to GHC to convince -- it that the test files are actually part of the current -- package. This means that library doesn't have to be installed -- globally and interface files generated during library compilation
− tests/compile-and-dump/GradingClient/Database.ghc710.template
@@ -1,4906 +0,0 @@-GradingClient/Database.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| data Nat- = Zero | Succ Nat- deriving (Eq, Ord) |]- ======>- data Nat- = Zero | Succ Nat- deriving (Eq, Ord)- type family Equals_0123456789 (a :: Nat) (b :: Nat) :: Bool where- Equals_0123456789 Zero Zero = TrueSym0- Equals_0123456789 (Succ a) (Succ b) = (:==) a b- Equals_0123456789 (a :: Nat) (b :: Nat) = FalseSym0- instance PEq (KProxy :: KProxy Nat) where- type (:==) (a :: Nat) (b :: Nat) = Equals_0123456789 a b- type ZeroSym0 = Zero- type SuccSym1 (t :: Nat) = Succ t- instance SuppressUnusedWarnings SuccSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) SuccSym0KindInference GHC.Tuple.())- data SuccSym0 (l :: TyFun Nat Nat)- = forall arg. KindOf (Apply SuccSym0 arg) ~ KindOf (SuccSym1 arg) =>- SuccSym0KindInference- type instance Apply SuccSym0 l = SuccSym1 l- type family Compare_0123456789 (a :: Nat)- (a :: Nat) :: Ordering where- Compare_0123456789 Zero Zero = Apply (Apply (Apply FoldlSym0 ThenCmpSym0) EQSym0) '[]- Compare_0123456789 (Succ a_0123456789) (Succ b_0123456789) = Apply (Apply (Apply FoldlSym0 ThenCmpSym0) EQSym0) (Apply (Apply (:$) (Apply (Apply CompareSym0 a_0123456789) b_0123456789)) '[])- Compare_0123456789 Zero (Succ _z_0123456789) = LTSym0- Compare_0123456789 (Succ _z_0123456789) Zero = GTSym0- type Compare_0123456789Sym2 (t :: Nat) (t :: Nat) =- Compare_0123456789 t t- instance SuppressUnusedWarnings Compare_0123456789Sym1 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Compare_0123456789Sym1KindInference GHC.Tuple.())- data Compare_0123456789Sym1 (l :: Nat) (l :: TyFun Nat Ordering)- = forall arg. KindOf (Apply (Compare_0123456789Sym1 l) arg) ~ KindOf (Compare_0123456789Sym2 l arg) =>- Compare_0123456789Sym1KindInference- type instance Apply (Compare_0123456789Sym1 l) l = Compare_0123456789Sym2 l l- instance SuppressUnusedWarnings Compare_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Compare_0123456789Sym0KindInference GHC.Tuple.())- data Compare_0123456789Sym0 (l :: TyFun Nat (TyFun Nat Ordering- -> *))- = forall arg. KindOf (Apply Compare_0123456789Sym0 arg) ~ KindOf (Compare_0123456789Sym1 arg) =>- Compare_0123456789Sym0KindInference- type instance Apply Compare_0123456789Sym0 l = Compare_0123456789Sym1 l- instance POrd (KProxy :: KProxy Nat) where- type Compare (a :: Nat) (a :: Nat) = Apply (Apply Compare_0123456789Sym0 a) a- data instance Sing (z :: Nat)- = z ~ Zero => SZero |- forall (n :: Nat). z ~ Succ n => SSucc (Sing (n :: Nat))- type SNat = (Sing :: Nat -> *)- instance SingKind (KProxy :: KProxy Nat) where- type DemoteRep (KProxy :: KProxy Nat) = Nat- fromSing SZero = Zero- fromSing (SSucc b) = Succ (fromSing b)- toSing Zero = SomeSing SZero- toSing (Succ b)- = case toSing b :: SomeSing (KProxy :: KProxy Nat) of {- SomeSing c -> SomeSing (SSucc c) }- instance SEq (KProxy :: KProxy Nat) where- (%:==) SZero SZero = STrue- (%:==) SZero (SSucc _) = SFalse- (%:==) (SSucc _) SZero = SFalse- (%:==) (SSucc a) (SSucc b) = (%:==) a b- instance SDecide (KProxy :: KProxy Nat) where- (%~) SZero SZero = Proved Refl- (%~) SZero (SSucc _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SSucc _) SZero- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SSucc a) (SSucc b)- = case (%~) a b of {- Proved Refl -> Proved Refl- Disproved contra- -> Disproved (\ refl -> case refl of { Refl -> contra Refl }) }- instance SOrd (KProxy :: KProxy Nat) =>- SOrd (KProxy :: KProxy Nat) where- sCompare ::- forall (t0 :: Nat) (t1 :: Nat).- Sing t0- -> Sing t1- -> Sing (Apply (Apply (CompareSym0 :: TyFun Nat (TyFun Nat Ordering- -> *)- -> *) t0 :: TyFun Nat Ordering- -> *) t1 :: Ordering)- sCompare SZero SZero- = let- lambda ::- (t0 ~ ZeroSym0, t1 ~ ZeroSym0) =>- Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- = applySing- (applySing- (applySing- (singFun3 (Proxy :: Proxy FoldlSym0) sFoldl)- (singFun2 (Proxy :: Proxy ThenCmpSym0) sThenCmp))- SEQ)- SNil- in lambda- sCompare (SSucc sA_0123456789) (SSucc sB_0123456789)- = let- lambda ::- forall a_0123456789- b_0123456789. (t0 ~ Apply SuccSym0 a_0123456789,- t1 ~ Apply SuccSym0 b_0123456789) =>- Sing a_0123456789- -> Sing b_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda a_0123456789 b_0123456789- = applySing- (applySing- (applySing- (singFun3 (Proxy :: Proxy FoldlSym0) sFoldl)- (singFun2 (Proxy :: Proxy ThenCmpSym0) sThenCmp))- SEQ)- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (applySing- (singFun2 (Proxy :: Proxy CompareSym0) sCompare) a_0123456789)- b_0123456789))- SNil)- in lambda sA_0123456789 sB_0123456789- sCompare SZero (SSucc _s_z_0123456789)- = let- lambda ::- forall _z_0123456789. (t0 ~ ZeroSym0,- t1 ~ Apply SuccSym0 _z_0123456789) =>- Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda _z_0123456789 = SLT- in lambda _s_z_0123456789- sCompare (SSucc _s_z_0123456789) SZero- = let- lambda ::- forall _z_0123456789. (t0 ~ Apply SuccSym0 _z_0123456789,- t1 ~ ZeroSym0) =>- Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda _z_0123456789 = SGT- in lambda _s_z_0123456789- instance SingI Zero where- sing = SZero- instance SingI n => SingI (Succ (n :: Nat)) where- sing = SSucc sing-GradingClient/Database.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| append :: Schema -> Schema -> Schema- append (Sch s1) (Sch s2) = Sch (s1 ++ s2)- attrNotIn :: Attribute -> Schema -> Bool- attrNotIn _ (Sch []) = True- attrNotIn (Attr name u) (Sch ((Attr name' _) : t))- = (name /= name') && (attrNotIn (Attr name u) (Sch t))- disjoint :: Schema -> Schema -> Bool- disjoint (Sch []) _ = True- disjoint (Sch (h : t)) s = (attrNotIn h s) && (disjoint (Sch t) s)- occurs :: [AChar] -> Schema -> Bool- occurs _ (Sch []) = False- occurs name (Sch ((Attr name' _) : attrs))- = name == name' || occurs name (Sch attrs)- lookup :: [AChar] -> Schema -> U- lookup _ (Sch []) = undefined- lookup name (Sch ((Attr name' u) : attrs))- = if name == name' then u else lookup name (Sch attrs)- - data U- = BOOL | STRING | NAT | VEC U Nat- deriving (Read, Eq, Show)- data AChar- = CA |- CB |- CC |- CD |- CE |- CF |- CG |- CH |- CI |- CJ |- CK |- CL |- CM |- CN |- CO |- CP |- CQ |- CR |- CS |- CT |- CU |- CV |- CW |- CX |- CY |- CZ- deriving (Read, Show, Eq)- data Attribute = Attr [AChar] U- data Schema = Sch [Attribute] |]- ======>- data U- = BOOL | STRING | NAT | VEC U Nat- deriving (Read, Eq, Show)- data AChar- = CA |- CB |- CC |- CD |- CE |- CF |- CG |- CH |- CI |- CJ |- CK |- CL |- CM |- CN |- CO |- CP |- CQ |- CR |- CS |- CT |- CU |- CV |- CW |- CX |- CY |- CZ- deriving (Read, Show, Eq)- data Attribute = Attr [AChar] U- data Schema = Sch [Attribute]- append :: Schema -> Schema -> Schema- append (Sch s1) (Sch s2) = Sch (s1 ++ s2)- attrNotIn :: Attribute -> Schema -> Bool- attrNotIn _ (Sch GHC.Types.[]) = True- attrNotIn (Attr name u) (Sch ((Attr name' _) GHC.Types.: t))- = ((name /= name') && (attrNotIn (Attr name u) (Sch t)))- disjoint :: Schema -> Schema -> Bool- disjoint (Sch GHC.Types.[]) _ = True- disjoint (Sch (h GHC.Types.: t)) s- = ((attrNotIn h s) && (disjoint (Sch t) s))- occurs :: [AChar] -> Schema -> Bool- occurs _ (Sch GHC.Types.[]) = False- occurs name (Sch ((Attr name' _) GHC.Types.: attrs))- = ((name == name') || (occurs name (Sch attrs)))- lookup :: [AChar] -> Schema -> U- lookup _ (Sch GHC.Types.[]) = undefined- lookup name (Sch ((Attr name' u) GHC.Types.: attrs))- = if (name == name') then u else lookup name (Sch attrs)- type family Equals_0123456789 (a :: U) (b :: U) :: Bool where- Equals_0123456789 BOOL BOOL = TrueSym0- Equals_0123456789 STRING STRING = TrueSym0- Equals_0123456789 NAT NAT = TrueSym0- Equals_0123456789 (VEC a a) (VEC b b) = (:&&) ((:==) a b) ((:==) a b)- Equals_0123456789 (a :: U) (b :: U) = FalseSym0- instance PEq (KProxy :: KProxy U) where- type (:==) (a :: U) (b :: U) = Equals_0123456789 a b- type BOOLSym0 = BOOL- type STRINGSym0 = STRING- type NATSym0 = NAT- type VECSym2 (t :: U) (t :: Nat) = VEC t t- instance SuppressUnusedWarnings VECSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) VECSym1KindInference GHC.Tuple.())- data VECSym1 (l :: U) (l :: TyFun Nat U)- = forall arg. KindOf (Apply (VECSym1 l) arg) ~ KindOf (VECSym2 l arg) =>- VECSym1KindInference- type instance Apply (VECSym1 l) l = VECSym2 l l- instance SuppressUnusedWarnings VECSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) VECSym0KindInference GHC.Tuple.())- data VECSym0 (l :: TyFun U (TyFun Nat U -> *))- = forall arg. KindOf (Apply VECSym0 arg) ~ KindOf (VECSym1 arg) =>- VECSym0KindInference- type instance Apply VECSym0 l = VECSym1 l- type family Equals_0123456789 (a :: AChar)- (b :: AChar) :: Bool where- Equals_0123456789 CA CA = TrueSym0- Equals_0123456789 CB CB = TrueSym0- Equals_0123456789 CC CC = TrueSym0- Equals_0123456789 CD CD = TrueSym0- Equals_0123456789 CE CE = TrueSym0- Equals_0123456789 CF CF = TrueSym0- Equals_0123456789 CG CG = TrueSym0- Equals_0123456789 CH CH = TrueSym0- Equals_0123456789 CI CI = TrueSym0- Equals_0123456789 CJ CJ = TrueSym0- Equals_0123456789 CK CK = TrueSym0- Equals_0123456789 CL CL = TrueSym0- Equals_0123456789 CM CM = TrueSym0- Equals_0123456789 CN CN = TrueSym0- Equals_0123456789 CO CO = TrueSym0- Equals_0123456789 CP CP = TrueSym0- Equals_0123456789 CQ CQ = TrueSym0- Equals_0123456789 CR CR = TrueSym0- Equals_0123456789 CS CS = TrueSym0- Equals_0123456789 CT CT = TrueSym0- Equals_0123456789 CU CU = TrueSym0- Equals_0123456789 CV CV = TrueSym0- Equals_0123456789 CW CW = TrueSym0- Equals_0123456789 CX CX = TrueSym0- Equals_0123456789 CY CY = TrueSym0- Equals_0123456789 CZ CZ = TrueSym0- Equals_0123456789 (a :: AChar) (b :: AChar) = FalseSym0- instance PEq (KProxy :: KProxy AChar) where- type (:==) (a :: AChar) (b :: AChar) = Equals_0123456789 a b- type CASym0 = CA- type CBSym0 = CB- type CCSym0 = CC- type CDSym0 = CD- type CESym0 = CE- type CFSym0 = CF- type CGSym0 = CG- type CHSym0 = CH- type CISym0 = CI- type CJSym0 = CJ- type CKSym0 = CK- type CLSym0 = CL- type CMSym0 = CM- type CNSym0 = CN- type COSym0 = CO- type CPSym0 = CP- type CQSym0 = CQ- type CRSym0 = CR- type CSSym0 = CS- type CTSym0 = CT- type CUSym0 = CU- type CVSym0 = CV- type CWSym0 = CW- type CXSym0 = CX- type CYSym0 = CY- type CZSym0 = CZ- type AttrSym2 (t :: [AChar]) (t :: U) = Attr t t- instance SuppressUnusedWarnings AttrSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) AttrSym1KindInference GHC.Tuple.())- data AttrSym1 (l :: [AChar]) (l :: TyFun U Attribute)- = forall arg. KindOf (Apply (AttrSym1 l) arg) ~ KindOf (AttrSym2 l arg) =>- AttrSym1KindInference- type instance Apply (AttrSym1 l) l = AttrSym2 l l- instance SuppressUnusedWarnings AttrSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) AttrSym0KindInference GHC.Tuple.())- data AttrSym0 (l :: TyFun [AChar] (TyFun U Attribute -> *))- = forall arg. KindOf (Apply AttrSym0 arg) ~ KindOf (AttrSym1 arg) =>- AttrSym0KindInference- type instance Apply AttrSym0 l = AttrSym1 l- type SchSym1 (t :: [Attribute]) = Sch t- instance SuppressUnusedWarnings SchSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) SchSym0KindInference GHC.Tuple.())- data SchSym0 (l :: TyFun [Attribute] Schema)- = forall arg. KindOf (Apply SchSym0 arg) ~ KindOf (SchSym1 arg) =>- SchSym0KindInference- type instance Apply SchSym0 l = SchSym1 l- type Let0123456789Scrutinee_0123456789Sym4 t t t t =- Let0123456789Scrutinee_0123456789 t t t t- instance SuppressUnusedWarnings Let0123456789Scrutinee_0123456789Sym3 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,)- Let0123456789Scrutinee_0123456789Sym3KindInference GHC.Tuple.())- data Let0123456789Scrutinee_0123456789Sym3 l l l l- = forall arg. KindOf (Apply (Let0123456789Scrutinee_0123456789Sym3 l l l) arg) ~ KindOf (Let0123456789Scrutinee_0123456789Sym4 l l l arg) =>- Let0123456789Scrutinee_0123456789Sym3KindInference- type instance Apply (Let0123456789Scrutinee_0123456789Sym3 l l l) l = Let0123456789Scrutinee_0123456789Sym4 l l l l- instance SuppressUnusedWarnings Let0123456789Scrutinee_0123456789Sym2 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,)- Let0123456789Scrutinee_0123456789Sym2KindInference GHC.Tuple.())- data Let0123456789Scrutinee_0123456789Sym2 l l l- = forall arg. KindOf (Apply (Let0123456789Scrutinee_0123456789Sym2 l l) arg) ~ KindOf (Let0123456789Scrutinee_0123456789Sym3 l l arg) =>- Let0123456789Scrutinee_0123456789Sym2KindInference- type instance Apply (Let0123456789Scrutinee_0123456789Sym2 l l) l = Let0123456789Scrutinee_0123456789Sym3 l l l- instance SuppressUnusedWarnings Let0123456789Scrutinee_0123456789Sym1 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,)- Let0123456789Scrutinee_0123456789Sym1KindInference GHC.Tuple.())- data Let0123456789Scrutinee_0123456789Sym1 l l- = forall arg. KindOf (Apply (Let0123456789Scrutinee_0123456789Sym1 l) arg) ~ KindOf (Let0123456789Scrutinee_0123456789Sym2 l arg) =>- Let0123456789Scrutinee_0123456789Sym1KindInference- type instance Apply (Let0123456789Scrutinee_0123456789Sym1 l) l = Let0123456789Scrutinee_0123456789Sym2 l l- instance SuppressUnusedWarnings Let0123456789Scrutinee_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,)- Let0123456789Scrutinee_0123456789Sym0KindInference GHC.Tuple.())- data Let0123456789Scrutinee_0123456789Sym0 l- = forall arg. KindOf (Apply Let0123456789Scrutinee_0123456789Sym0 arg) ~ KindOf (Let0123456789Scrutinee_0123456789Sym1 arg) =>- Let0123456789Scrutinee_0123456789Sym0KindInference- type instance Apply Let0123456789Scrutinee_0123456789Sym0 l = Let0123456789Scrutinee_0123456789Sym1 l- type family Let0123456789Scrutinee_0123456789 name- name'- u- attrs where- Let0123456789Scrutinee_0123456789 name name' u attrs = Apply (Apply (:==$) name) name'- type family Case_0123456789 name name' u attrs t where- Case_0123456789 name name' u attrs True = u- Case_0123456789 name name' u attrs False = Apply (Apply LookupSym0 name) (Apply SchSym0 attrs)- type LookupSym2 (t :: [AChar]) (t :: Schema) = Lookup t t- instance SuppressUnusedWarnings LookupSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) LookupSym1KindInference GHC.Tuple.())- data LookupSym1 (l :: [AChar]) (l :: TyFun Schema U)- = forall arg. KindOf (Apply (LookupSym1 l) arg) ~ KindOf (LookupSym2 l arg) =>- LookupSym1KindInference- type instance Apply (LookupSym1 l) l = LookupSym2 l l- instance SuppressUnusedWarnings LookupSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) LookupSym0KindInference GHC.Tuple.())- data LookupSym0 (l :: TyFun [AChar] (TyFun Schema U -> *))- = forall arg. KindOf (Apply LookupSym0 arg) ~ KindOf (LookupSym1 arg) =>- LookupSym0KindInference- type instance Apply LookupSym0 l = LookupSym1 l- type OccursSym2 (t :: [AChar]) (t :: Schema) = Occurs t t- instance SuppressUnusedWarnings OccursSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) OccursSym1KindInference GHC.Tuple.())- data OccursSym1 (l :: [AChar]) (l :: TyFun Schema Bool)- = forall arg. KindOf (Apply (OccursSym1 l) arg) ~ KindOf (OccursSym2 l arg) =>- OccursSym1KindInference- type instance Apply (OccursSym1 l) l = OccursSym2 l l- instance SuppressUnusedWarnings OccursSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) OccursSym0KindInference GHC.Tuple.())- data OccursSym0 (l :: TyFun [AChar] (TyFun Schema Bool -> *))- = forall arg. KindOf (Apply OccursSym0 arg) ~ KindOf (OccursSym1 arg) =>- OccursSym0KindInference- type instance Apply OccursSym0 l = OccursSym1 l- type AttrNotInSym2 (t :: Attribute) (t :: Schema) = AttrNotIn t t- instance SuppressUnusedWarnings AttrNotInSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) AttrNotInSym1KindInference GHC.Tuple.())- data AttrNotInSym1 (l :: Attribute) (l :: TyFun Schema Bool)- = forall arg. KindOf (Apply (AttrNotInSym1 l) arg) ~ KindOf (AttrNotInSym2 l arg) =>- AttrNotInSym1KindInference- type instance Apply (AttrNotInSym1 l) l = AttrNotInSym2 l l- instance SuppressUnusedWarnings AttrNotInSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) AttrNotInSym0KindInference GHC.Tuple.())- data AttrNotInSym0 (l :: TyFun Attribute (TyFun Schema Bool -> *))- = forall arg. KindOf (Apply AttrNotInSym0 arg) ~ KindOf (AttrNotInSym1 arg) =>- AttrNotInSym0KindInference- type instance Apply AttrNotInSym0 l = AttrNotInSym1 l- type DisjointSym2 (t :: Schema) (t :: Schema) = Disjoint t t- instance SuppressUnusedWarnings DisjointSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) DisjointSym1KindInference GHC.Tuple.())- data DisjointSym1 (l :: Schema) (l :: TyFun Schema Bool)- = forall arg. KindOf (Apply (DisjointSym1 l) arg) ~ KindOf (DisjointSym2 l arg) =>- DisjointSym1KindInference- type instance Apply (DisjointSym1 l) l = DisjointSym2 l l- instance SuppressUnusedWarnings DisjointSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) DisjointSym0KindInference GHC.Tuple.())- data DisjointSym0 (l :: TyFun Schema (TyFun Schema Bool -> *))- = forall arg. KindOf (Apply DisjointSym0 arg) ~ KindOf (DisjointSym1 arg) =>- DisjointSym0KindInference- type instance Apply DisjointSym0 l = DisjointSym1 l- type AppendSym2 (t :: Schema) (t :: Schema) = Append t t- instance SuppressUnusedWarnings AppendSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) AppendSym1KindInference GHC.Tuple.())- data AppendSym1 (l :: Schema) (l :: TyFun Schema Schema)- = forall arg. KindOf (Apply (AppendSym1 l) arg) ~ KindOf (AppendSym2 l arg) =>- AppendSym1KindInference- type instance Apply (AppendSym1 l) l = AppendSym2 l l- instance SuppressUnusedWarnings AppendSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) AppendSym0KindInference GHC.Tuple.())- data AppendSym0 (l :: TyFun Schema (TyFun Schema Schema -> *))- = forall arg. KindOf (Apply AppendSym0 arg) ~ KindOf (AppendSym1 arg) =>- AppendSym0KindInference- type instance Apply AppendSym0 l = AppendSym1 l- type family Lookup (a :: [AChar]) (a :: Schema) :: U where- Lookup _z_0123456789 (Sch '[]) = Any- Lookup name (Sch ((:) (Attr name' u) attrs)) = Case_0123456789 name name' u attrs (Let0123456789Scrutinee_0123456789Sym4 name name' u attrs)- type family Occurs (a :: [AChar]) (a :: Schema) :: Bool where- Occurs _z_0123456789 (Sch '[]) = FalseSym0- Occurs name (Sch ((:) (Attr name' _z_0123456789) attrs)) = Apply (Apply (:||$) (Apply (Apply (:==$) name) name')) (Apply (Apply OccursSym0 name) (Apply SchSym0 attrs))- type family AttrNotIn (a :: Attribute) (a :: Schema) :: Bool where- AttrNotIn _z_0123456789 (Sch '[]) = TrueSym0- AttrNotIn (Attr name u) (Sch ((:) (Attr name' _z_0123456789) t)) = Apply (Apply (:&&$) (Apply (Apply (:/=$) name) name')) (Apply (Apply AttrNotInSym0 (Apply (Apply AttrSym0 name) u)) (Apply SchSym0 t))- type family Disjoint (a :: Schema) (a :: Schema) :: Bool where- Disjoint (Sch '[]) _z_0123456789 = TrueSym0- Disjoint (Sch ((:) h t)) s = Apply (Apply (:&&$) (Apply (Apply AttrNotInSym0 h) s)) (Apply (Apply DisjointSym0 (Apply SchSym0 t)) s)- type family Append (a :: Schema) (a :: Schema) :: Schema where- Append (Sch s1) (Sch s2) = Apply SchSym0 (Apply (Apply (:++$) s1) s2)- sLookup ::- forall (t :: [AChar]) (t :: Schema).- Sing t -> Sing t -> Sing (Apply (Apply LookupSym0 t) t :: U)- sOccurs ::- forall (t :: [AChar]) (t :: Schema).- Sing t -> Sing t -> Sing (Apply (Apply OccursSym0 t) t :: Bool)- sAttrNotIn ::- forall (t :: Attribute) (t :: Schema).- Sing t -> Sing t -> Sing (Apply (Apply AttrNotInSym0 t) t :: Bool)- sDisjoint ::- forall (t :: Schema) (t :: Schema).- Sing t -> Sing t -> Sing (Apply (Apply DisjointSym0 t) t :: Bool)- sAppend ::- forall (t :: Schema) (t :: Schema).- Sing t -> Sing t -> Sing (Apply (Apply AppendSym0 t) t :: Schema)- sLookup _s_z_0123456789 (SSch SNil)- = let- lambda ::- forall _z_0123456789. (t ~ _z_0123456789, t ~ Apply SchSym0 '[]) =>- Sing _z_0123456789 -> Sing (Apply (Apply LookupSym0 t) t :: U)- lambda _z_0123456789 = undefined- in lambda _s_z_0123456789- sLookup sName (SSch (SCons (SAttr sName' sU) sAttrs))- = let- lambda ::- forall name name' u attrs. (t ~ name,- t ~ Apply SchSym0 (Apply (Apply (:$) (Apply (Apply AttrSym0 name') u)) attrs)) =>- Sing name- -> Sing name'- -> Sing u -> Sing attrs -> Sing (Apply (Apply LookupSym0 t) t :: U)- lambda name name' u attrs- = let- sScrutinee_0123456789 ::- Sing (Let0123456789Scrutinee_0123456789Sym4 name name' u attrs)- sScrutinee_0123456789- = applySing- (applySing (singFun2 (Proxy :: Proxy (:==$)) (%:==)) name) name'- in case sScrutinee_0123456789 of {- STrue- -> let- lambda ::- TrueSym0 ~ Let0123456789Scrutinee_0123456789Sym4 name name' u attrs =>- Sing (Case_0123456789 name name' u attrs TrueSym0 :: U)- lambda = u- in lambda- SFalse- -> let- lambda ::- FalseSym0 ~ Let0123456789Scrutinee_0123456789Sym4 name name' u attrs =>- Sing (Case_0123456789 name name' u attrs FalseSym0 :: U)- lambda- = applySing- (applySing (singFun2 (Proxy :: Proxy LookupSym0) sLookup) name)- (applySing (singFun1 (Proxy :: Proxy SchSym0) SSch) attrs)- in lambda } ::- Sing (Case_0123456789 name name' u attrs (Let0123456789Scrutinee_0123456789Sym4 name name' u attrs) :: U)- in lambda sName sName' sU sAttrs- sOccurs _s_z_0123456789 (SSch SNil)- = let- lambda ::- forall _z_0123456789. (t ~ _z_0123456789, t ~ Apply SchSym0 '[]) =>- Sing _z_0123456789 -> Sing (Apply (Apply OccursSym0 t) t :: Bool)- lambda _z_0123456789 = SFalse- in lambda _s_z_0123456789- sOccurs sName (SSch (SCons (SAttr sName' _s_z_0123456789) sAttrs))- = let- lambda ::- forall name name' _z_0123456789 attrs. (t ~ name,- t ~ Apply SchSym0 (Apply (Apply (:$) (Apply (Apply AttrSym0 name') _z_0123456789)) attrs)) =>- Sing name- -> Sing name'- -> Sing _z_0123456789- -> Sing attrs -> Sing (Apply (Apply OccursSym0 t) t :: Bool)- lambda name name' _z_0123456789 attrs- = applySing- (applySing- (singFun2 (Proxy :: Proxy (:||$)) (%:||))- (applySing- (applySing (singFun2 (Proxy :: Proxy (:==$)) (%:==)) name) name'))- (applySing- (applySing (singFun2 (Proxy :: Proxy OccursSym0) sOccurs) name)- (applySing (singFun1 (Proxy :: Proxy SchSym0) SSch) attrs))- in lambda sName sName' _s_z_0123456789 sAttrs- sAttrNotIn _s_z_0123456789 (SSch SNil)- = let- lambda ::- forall _z_0123456789. (t ~ _z_0123456789, t ~ Apply SchSym0 '[]) =>- Sing _z_0123456789- -> Sing (Apply (Apply AttrNotInSym0 t) t :: Bool)- lambda _z_0123456789 = STrue- in lambda _s_z_0123456789- sAttrNotIn- (SAttr sName sU)- (SSch (SCons (SAttr sName' _s_z_0123456789) sT))- = let- lambda ::- forall name- u- name'- _z_0123456789- t. (t ~ Apply (Apply AttrSym0 name) u,- t ~ Apply SchSym0 (Apply (Apply (:$) (Apply (Apply AttrSym0 name') _z_0123456789)) t)) =>- Sing name- -> Sing u- -> Sing name'- -> Sing _z_0123456789- -> Sing t -> Sing (Apply (Apply AttrNotInSym0 t) t :: Bool)- lambda name u name' _z_0123456789 t- = applySing- (applySing- (singFun2 (Proxy :: Proxy (:&&$)) (%:&&))- (applySing- (applySing (singFun2 (Proxy :: Proxy (:/=$)) (%:/=)) name) name'))- (applySing- (applySing- (singFun2 (Proxy :: Proxy AttrNotInSym0) sAttrNotIn)- (applySing- (applySing (singFun2 (Proxy :: Proxy AttrSym0) SAttr) name) u))- (applySing (singFun1 (Proxy :: Proxy SchSym0) SSch) t))- in lambda sName sU sName' _s_z_0123456789 sT- sDisjoint (SSch SNil) _s_z_0123456789- = let- lambda ::- forall _z_0123456789. (t ~ Apply SchSym0 '[], t ~ _z_0123456789) =>- Sing _z_0123456789 -> Sing (Apply (Apply DisjointSym0 t) t :: Bool)- lambda _z_0123456789 = STrue- in lambda _s_z_0123456789- sDisjoint (SSch (SCons sH sT)) sS- = let- lambda ::- forall h t s. (t ~ Apply SchSym0 (Apply (Apply (:$) h) t),- t ~ s) =>- Sing h- -> Sing t- -> Sing s -> Sing (Apply (Apply DisjointSym0 t) t :: Bool)- lambda h t s- = applySing- (applySing- (singFun2 (Proxy :: Proxy (:&&$)) (%:&&))- (applySing- (applySing (singFun2 (Proxy :: Proxy AttrNotInSym0) sAttrNotIn) h)- s))- (applySing- (applySing- (singFun2 (Proxy :: Proxy DisjointSym0) sDisjoint)- (applySing (singFun1 (Proxy :: Proxy SchSym0) SSch) t))- s)- in lambda sH sT sS- sAppend (SSch sS1) (SSch sS2)- = let- lambda ::- forall s1 s2. (t ~ Apply SchSym0 s1, t ~ Apply SchSym0 s2) =>- Sing s1 -> Sing s2 -> Sing (Apply (Apply AppendSym0 t) t :: Schema)- lambda s1 s2- = applySing- (singFun1 (Proxy :: Proxy SchSym0) SSch)- (applySing- (applySing (singFun2 (Proxy :: Proxy (:++$)) (%:++)) s1) s2)- in lambda sS1 sS2- data instance Sing (z :: U)- = z ~ BOOL => SBOOL |- z ~ STRING => SSTRING |- z ~ NAT => SNAT |- forall (n :: U) (n :: Nat). z ~ VEC n n =>- SVEC (Sing (n :: U)) (Sing (n :: Nat))- type SU = (Sing :: U -> *)- instance SingKind (KProxy :: KProxy U) where- type DemoteRep (KProxy :: KProxy U) = U- fromSing SBOOL = BOOL- fromSing SSTRING = STRING- fromSing SNAT = NAT- fromSing (SVEC b b) = VEC (fromSing b) (fromSing b)- toSing BOOL = SomeSing SBOOL- toSing STRING = SomeSing SSTRING- toSing NAT = SomeSing SNAT- toSing (VEC b b)- = case- GHC.Tuple.(,)- (toSing b :: SomeSing (KProxy :: KProxy U))- (toSing b :: SomeSing (KProxy :: KProxy Nat))- of {- GHC.Tuple.(,) (SomeSing c) (SomeSing c) -> SomeSing (SVEC c c) }- instance SEq (KProxy :: KProxy U) where- (%:==) SBOOL SBOOL = STrue- (%:==) SBOOL SSTRING = SFalse- (%:==) SBOOL SNAT = SFalse- (%:==) SBOOL (SVEC _ _) = SFalse- (%:==) SSTRING SBOOL = SFalse- (%:==) SSTRING SSTRING = STrue- (%:==) SSTRING SNAT = SFalse- (%:==) SSTRING (SVEC _ _) = SFalse- (%:==) SNAT SBOOL = SFalse- (%:==) SNAT SSTRING = SFalse- (%:==) SNAT SNAT = STrue- (%:==) SNAT (SVEC _ _) = SFalse- (%:==) (SVEC _ _) SBOOL = SFalse- (%:==) (SVEC _ _) SSTRING = SFalse- (%:==) (SVEC _ _) SNAT = SFalse- (%:==) (SVEC a a) (SVEC b b) = (%:&&) ((%:==) a b) ((%:==) a b)- instance SDecide (KProxy :: KProxy U) where- (%~) SBOOL SBOOL = Proved Refl- (%~) SBOOL SSTRING- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SBOOL SNAT- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SBOOL (SVEC _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SSTRING SBOOL- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SSTRING SSTRING = Proved Refl- (%~) SSTRING SNAT- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SSTRING (SVEC _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SNAT SBOOL- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SNAT SSTRING- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SNAT SNAT = Proved Refl- (%~) SNAT (SVEC _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SVEC _ _) SBOOL- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SVEC _ _) SSTRING- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SVEC _ _) SNAT- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SVEC a a) (SVEC b b)- = case GHC.Tuple.(,) ((%~) a b) ((%~) a b) of {- GHC.Tuple.(,) (Proved Refl) (Proved Refl) -> Proved Refl- GHC.Tuple.(,) (Disproved contra) _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })- GHC.Tuple.(,) _ (Disproved contra)- -> Disproved (\ refl -> case refl of { Refl -> contra Refl }) }- data instance Sing (z :: AChar)- = z ~ CA => SCA |- z ~ CB => SCB |- z ~ CC => SCC |- z ~ CD => SCD |- z ~ CE => SCE |- z ~ CF => SCF |- z ~ CG => SCG |- z ~ CH => SCH |- z ~ CI => SCI |- z ~ CJ => SCJ |- z ~ CK => SCK |- z ~ CL => SCL |- z ~ CM => SCM |- z ~ CN => SCN |- z ~ CO => SCO |- z ~ CP => SCP |- z ~ CQ => SCQ |- z ~ CR => SCR |- z ~ CS => SCS |- z ~ CT => SCT |- z ~ CU => SCU |- z ~ CV => SCV |- z ~ CW => SCW |- z ~ CX => SCX |- z ~ CY => SCY |- z ~ CZ => SCZ- type SAChar = (Sing :: AChar -> *)- instance SingKind (KProxy :: KProxy AChar) where- type DemoteRep (KProxy :: KProxy AChar) = AChar- fromSing SCA = CA- fromSing SCB = CB- fromSing SCC = CC- fromSing SCD = CD- fromSing SCE = CE- fromSing SCF = CF- fromSing SCG = CG- fromSing SCH = CH- fromSing SCI = CI- fromSing SCJ = CJ- fromSing SCK = CK- fromSing SCL = CL- fromSing SCM = CM- fromSing SCN = CN- fromSing SCO = CO- fromSing SCP = CP- fromSing SCQ = CQ- fromSing SCR = CR- fromSing SCS = CS- fromSing SCT = CT- fromSing SCU = CU- fromSing SCV = CV- fromSing SCW = CW- fromSing SCX = CX- fromSing SCY = CY- fromSing SCZ = CZ- toSing CA = SomeSing SCA- toSing CB = SomeSing SCB- toSing CC = SomeSing SCC- toSing CD = SomeSing SCD- toSing CE = SomeSing SCE- toSing CF = SomeSing SCF- toSing CG = SomeSing SCG- toSing CH = SomeSing SCH- toSing CI = SomeSing SCI- toSing CJ = SomeSing SCJ- toSing CK = SomeSing SCK- toSing CL = SomeSing SCL- toSing CM = SomeSing SCM- toSing CN = SomeSing SCN- toSing CO = SomeSing SCO- toSing CP = SomeSing SCP- toSing CQ = SomeSing SCQ- toSing CR = SomeSing SCR- toSing CS = SomeSing SCS- toSing CT = SomeSing SCT- toSing CU = SomeSing SCU- toSing CV = SomeSing SCV- toSing CW = SomeSing SCW- toSing CX = SomeSing SCX- toSing CY = SomeSing SCY- toSing CZ = SomeSing SCZ- instance SEq (KProxy :: KProxy AChar) where- (%:==) SCA SCA = STrue- (%:==) SCA SCB = SFalse- (%:==) SCA SCC = SFalse- (%:==) SCA SCD = SFalse- (%:==) SCA SCE = SFalse- (%:==) SCA SCF = SFalse- (%:==) SCA SCG = SFalse- (%:==) SCA SCH = SFalse- (%:==) SCA SCI = SFalse- (%:==) SCA SCJ = SFalse- (%:==) SCA SCK = SFalse- (%:==) SCA SCL = SFalse- (%:==) SCA SCM = SFalse- (%:==) SCA SCN = SFalse- (%:==) SCA SCO = SFalse- (%:==) SCA SCP = SFalse- (%:==) SCA SCQ = SFalse- (%:==) SCA SCR = SFalse- (%:==) SCA SCS = SFalse- (%:==) SCA SCT = SFalse- (%:==) SCA SCU = SFalse- (%:==) SCA SCV = SFalse- (%:==) SCA SCW = SFalse- (%:==) SCA SCX = SFalse- (%:==) SCA SCY = SFalse- (%:==) SCA SCZ = SFalse- (%:==) SCB SCA = SFalse- (%:==) SCB SCB = STrue- (%:==) SCB SCC = SFalse- (%:==) SCB SCD = SFalse- (%:==) SCB SCE = SFalse- (%:==) SCB SCF = SFalse- (%:==) SCB SCG = SFalse- (%:==) SCB SCH = SFalse- (%:==) SCB SCI = SFalse- (%:==) SCB SCJ = SFalse- (%:==) SCB SCK = SFalse- (%:==) SCB SCL = SFalse- (%:==) SCB SCM = SFalse- (%:==) SCB SCN = SFalse- (%:==) SCB SCO = SFalse- (%:==) SCB SCP = SFalse- (%:==) SCB SCQ = SFalse- (%:==) SCB SCR = SFalse- (%:==) SCB SCS = SFalse- (%:==) SCB SCT = SFalse- (%:==) SCB SCU = SFalse- (%:==) SCB SCV = SFalse- (%:==) SCB SCW = SFalse- (%:==) SCB SCX = SFalse- (%:==) SCB SCY = SFalse- (%:==) SCB SCZ = SFalse- (%:==) SCC SCA = SFalse- (%:==) SCC SCB = SFalse- (%:==) SCC SCC = STrue- (%:==) SCC SCD = SFalse- (%:==) SCC SCE = SFalse- (%:==) SCC SCF = SFalse- (%:==) SCC SCG = SFalse- (%:==) SCC SCH = SFalse- (%:==) SCC SCI = SFalse- (%:==) SCC SCJ = SFalse- (%:==) SCC SCK = SFalse- (%:==) SCC SCL = SFalse- (%:==) SCC SCM = SFalse- (%:==) SCC SCN = SFalse- (%:==) SCC SCO = SFalse- (%:==) SCC SCP = SFalse- (%:==) SCC SCQ = SFalse- (%:==) SCC SCR = SFalse- (%:==) SCC SCS = SFalse- (%:==) SCC SCT = SFalse- (%:==) SCC SCU = SFalse- (%:==) SCC SCV = SFalse- (%:==) SCC SCW = SFalse- (%:==) SCC SCX = SFalse- (%:==) SCC SCY = SFalse- (%:==) SCC SCZ = SFalse- (%:==) SCD SCA = SFalse- (%:==) SCD SCB = SFalse- (%:==) SCD SCC = SFalse- (%:==) SCD SCD = STrue- (%:==) SCD SCE = SFalse- (%:==) SCD SCF = SFalse- (%:==) SCD SCG = SFalse- (%:==) SCD SCH = SFalse- (%:==) SCD SCI = SFalse- (%:==) SCD SCJ = SFalse- (%:==) SCD SCK = SFalse- (%:==) SCD SCL = SFalse- (%:==) SCD SCM = SFalse- (%:==) SCD SCN = SFalse- (%:==) SCD SCO = SFalse- (%:==) SCD SCP = SFalse- (%:==) SCD SCQ = SFalse- (%:==) SCD SCR = SFalse- (%:==) SCD SCS = SFalse- (%:==) SCD SCT = SFalse- (%:==) SCD SCU = SFalse- (%:==) SCD SCV = SFalse- (%:==) SCD SCW = SFalse- (%:==) SCD SCX = SFalse- (%:==) SCD SCY = SFalse- (%:==) SCD SCZ = SFalse- (%:==) SCE SCA = SFalse- (%:==) SCE SCB = SFalse- (%:==) SCE SCC = SFalse- (%:==) SCE SCD = SFalse- (%:==) SCE SCE = STrue- (%:==) SCE SCF = SFalse- (%:==) SCE SCG = SFalse- (%:==) SCE SCH = SFalse- (%:==) SCE SCI = SFalse- (%:==) SCE SCJ = SFalse- (%:==) SCE SCK = SFalse- (%:==) SCE SCL = SFalse- (%:==) SCE SCM = SFalse- (%:==) SCE SCN = SFalse- (%:==) SCE SCO = SFalse- (%:==) SCE SCP = SFalse- (%:==) SCE SCQ = SFalse- (%:==) SCE SCR = SFalse- (%:==) SCE SCS = SFalse- (%:==) SCE SCT = SFalse- (%:==) SCE SCU = SFalse- (%:==) SCE SCV = SFalse- (%:==) SCE SCW = SFalse- (%:==) SCE SCX = SFalse- (%:==) SCE SCY = SFalse- (%:==) SCE SCZ = SFalse- (%:==) SCF SCA = SFalse- (%:==) SCF SCB = SFalse- (%:==) SCF SCC = SFalse- (%:==) SCF SCD = SFalse- (%:==) SCF SCE = SFalse- (%:==) SCF SCF = STrue- (%:==) SCF SCG = SFalse- (%:==) SCF SCH = SFalse- (%:==) SCF SCI = SFalse- (%:==) SCF SCJ = SFalse- (%:==) SCF SCK = SFalse- (%:==) SCF SCL = SFalse- (%:==) SCF SCM = SFalse- (%:==) SCF SCN = SFalse- (%:==) SCF SCO = SFalse- (%:==) SCF SCP = SFalse- (%:==) SCF SCQ = SFalse- (%:==) SCF SCR = SFalse- (%:==) SCF SCS = SFalse- (%:==) SCF SCT = SFalse- (%:==) SCF SCU = SFalse- (%:==) SCF SCV = SFalse- (%:==) SCF SCW = SFalse- (%:==) SCF SCX = SFalse- (%:==) SCF SCY = SFalse- (%:==) SCF SCZ = SFalse- (%:==) SCG SCA = SFalse- (%:==) SCG SCB = SFalse- (%:==) SCG SCC = SFalse- (%:==) SCG SCD = SFalse- (%:==) SCG SCE = SFalse- (%:==) SCG SCF = SFalse- (%:==) SCG SCG = STrue- (%:==) SCG SCH = SFalse- (%:==) SCG SCI = SFalse- (%:==) SCG SCJ = SFalse- (%:==) SCG SCK = SFalse- (%:==) SCG SCL = SFalse- (%:==) SCG SCM = SFalse- (%:==) SCG SCN = SFalse- (%:==) SCG SCO = SFalse- (%:==) SCG SCP = SFalse- (%:==) SCG SCQ = SFalse- (%:==) SCG SCR = SFalse- (%:==) SCG SCS = SFalse- (%:==) SCG SCT = SFalse- (%:==) SCG SCU = SFalse- (%:==) SCG SCV = SFalse- (%:==) SCG SCW = SFalse- (%:==) SCG SCX = SFalse- (%:==) SCG SCY = SFalse- (%:==) SCG SCZ = SFalse- (%:==) SCH SCA = SFalse- (%:==) SCH SCB = SFalse- (%:==) SCH SCC = SFalse- (%:==) SCH SCD = SFalse- (%:==) SCH SCE = SFalse- (%:==) SCH SCF = SFalse- (%:==) SCH SCG = SFalse- (%:==) SCH SCH = STrue- (%:==) SCH SCI = SFalse- (%:==) SCH SCJ = SFalse- (%:==) SCH SCK = SFalse- (%:==) SCH SCL = SFalse- (%:==) SCH SCM = SFalse- (%:==) SCH SCN = SFalse- (%:==) SCH SCO = SFalse- (%:==) SCH SCP = SFalse- (%:==) SCH SCQ = SFalse- (%:==) SCH SCR = SFalse- (%:==) SCH SCS = SFalse- (%:==) SCH SCT = SFalse- (%:==) SCH SCU = SFalse- (%:==) SCH SCV = SFalse- (%:==) SCH SCW = SFalse- (%:==) SCH SCX = SFalse- (%:==) SCH SCY = SFalse- (%:==) SCH SCZ = SFalse- (%:==) SCI SCA = SFalse- (%:==) SCI SCB = SFalse- (%:==) SCI SCC = SFalse- (%:==) SCI SCD = SFalse- (%:==) SCI SCE = SFalse- (%:==) SCI SCF = SFalse- (%:==) SCI SCG = SFalse- (%:==) SCI SCH = SFalse- (%:==) SCI SCI = STrue- (%:==) SCI SCJ = SFalse- (%:==) SCI SCK = SFalse- (%:==) SCI SCL = SFalse- (%:==) SCI SCM = SFalse- (%:==) SCI SCN = SFalse- (%:==) SCI SCO = SFalse- (%:==) SCI SCP = SFalse- (%:==) SCI SCQ = SFalse- (%:==) SCI SCR = SFalse- (%:==) SCI SCS = SFalse- (%:==) SCI SCT = SFalse- (%:==) SCI SCU = SFalse- (%:==) SCI SCV = SFalse- (%:==) SCI SCW = SFalse- (%:==) SCI SCX = SFalse- (%:==) SCI SCY = SFalse- (%:==) SCI SCZ = SFalse- (%:==) SCJ SCA = SFalse- (%:==) SCJ SCB = SFalse- (%:==) SCJ SCC = SFalse- (%:==) SCJ SCD = SFalse- (%:==) SCJ SCE = SFalse- (%:==) SCJ SCF = SFalse- (%:==) SCJ SCG = SFalse- (%:==) SCJ SCH = SFalse- (%:==) SCJ SCI = SFalse- (%:==) SCJ SCJ = STrue- (%:==) SCJ SCK = SFalse- (%:==) SCJ SCL = SFalse- (%:==) SCJ SCM = SFalse- (%:==) SCJ SCN = SFalse- (%:==) SCJ SCO = SFalse- (%:==) SCJ SCP = SFalse- (%:==) SCJ SCQ = SFalse- (%:==) SCJ SCR = SFalse- (%:==) SCJ SCS = SFalse- (%:==) SCJ SCT = SFalse- (%:==) SCJ SCU = SFalse- (%:==) SCJ SCV = SFalse- (%:==) SCJ SCW = SFalse- (%:==) SCJ SCX = SFalse- (%:==) SCJ SCY = SFalse- (%:==) SCJ SCZ = SFalse- (%:==) SCK SCA = SFalse- (%:==) SCK SCB = SFalse- (%:==) SCK SCC = SFalse- (%:==) SCK SCD = SFalse- (%:==) SCK SCE = SFalse- (%:==) SCK SCF = SFalse- (%:==) SCK SCG = SFalse- (%:==) SCK SCH = SFalse- (%:==) SCK SCI = SFalse- (%:==) SCK SCJ = SFalse- (%:==) SCK SCK = STrue- (%:==) SCK SCL = SFalse- (%:==) SCK SCM = SFalse- (%:==) SCK SCN = SFalse- (%:==) SCK SCO = SFalse- (%:==) SCK SCP = SFalse- (%:==) SCK SCQ = SFalse- (%:==) SCK SCR = SFalse- (%:==) SCK SCS = SFalse- (%:==) SCK SCT = SFalse- (%:==) SCK SCU = SFalse- (%:==) SCK SCV = SFalse- (%:==) SCK SCW = SFalse- (%:==) SCK SCX = SFalse- (%:==) SCK SCY = SFalse- (%:==) SCK SCZ = SFalse- (%:==) SCL SCA = SFalse- (%:==) SCL SCB = SFalse- (%:==) SCL SCC = SFalse- (%:==) SCL SCD = SFalse- (%:==) SCL SCE = SFalse- (%:==) SCL SCF = SFalse- (%:==) SCL SCG = SFalse- (%:==) SCL SCH = SFalse- (%:==) SCL SCI = SFalse- (%:==) SCL SCJ = SFalse- (%:==) SCL SCK = SFalse- (%:==) SCL SCL = STrue- (%:==) SCL SCM = SFalse- (%:==) SCL SCN = SFalse- (%:==) SCL SCO = SFalse- (%:==) SCL SCP = SFalse- (%:==) SCL SCQ = SFalse- (%:==) SCL SCR = SFalse- (%:==) SCL SCS = SFalse- (%:==) SCL SCT = SFalse- (%:==) SCL SCU = SFalse- (%:==) SCL SCV = SFalse- (%:==) SCL SCW = SFalse- (%:==) SCL SCX = SFalse- (%:==) SCL SCY = SFalse- (%:==) SCL SCZ = SFalse- (%:==) SCM SCA = SFalse- (%:==) SCM SCB = SFalse- (%:==) SCM SCC = SFalse- (%:==) SCM SCD = SFalse- (%:==) SCM SCE = SFalse- (%:==) SCM SCF = SFalse- (%:==) SCM SCG = SFalse- (%:==) SCM SCH = SFalse- (%:==) SCM SCI = SFalse- (%:==) SCM SCJ = SFalse- (%:==) SCM SCK = SFalse- (%:==) SCM SCL = SFalse- (%:==) SCM SCM = STrue- (%:==) SCM SCN = SFalse- (%:==) SCM SCO = SFalse- (%:==) SCM SCP = SFalse- (%:==) SCM SCQ = SFalse- (%:==) SCM SCR = SFalse- (%:==) SCM SCS = SFalse- (%:==) SCM SCT = SFalse- (%:==) SCM SCU = SFalse- (%:==) SCM SCV = SFalse- (%:==) SCM SCW = SFalse- (%:==) SCM SCX = SFalse- (%:==) SCM SCY = SFalse- (%:==) SCM SCZ = SFalse- (%:==) SCN SCA = SFalse- (%:==) SCN SCB = SFalse- (%:==) SCN SCC = SFalse- (%:==) SCN SCD = SFalse- (%:==) SCN SCE = SFalse- (%:==) SCN SCF = SFalse- (%:==) SCN SCG = SFalse- (%:==) SCN SCH = SFalse- (%:==) SCN SCI = SFalse- (%:==) SCN SCJ = SFalse- (%:==) SCN SCK = SFalse- (%:==) SCN SCL = SFalse- (%:==) SCN SCM = SFalse- (%:==) SCN SCN = STrue- (%:==) SCN SCO = SFalse- (%:==) SCN SCP = SFalse- (%:==) SCN SCQ = SFalse- (%:==) SCN SCR = SFalse- (%:==) SCN SCS = SFalse- (%:==) SCN SCT = SFalse- (%:==) SCN SCU = SFalse- (%:==) SCN SCV = SFalse- (%:==) SCN SCW = SFalse- (%:==) SCN SCX = SFalse- (%:==) SCN SCY = SFalse- (%:==) SCN SCZ = SFalse- (%:==) SCO SCA = SFalse- (%:==) SCO SCB = SFalse- (%:==) SCO SCC = SFalse- (%:==) SCO SCD = SFalse- (%:==) SCO SCE = SFalse- (%:==) SCO SCF = SFalse- (%:==) SCO SCG = SFalse- (%:==) SCO SCH = SFalse- (%:==) SCO SCI = SFalse- (%:==) SCO SCJ = SFalse- (%:==) SCO SCK = SFalse- (%:==) SCO SCL = SFalse- (%:==) SCO SCM = SFalse- (%:==) SCO SCN = SFalse- (%:==) SCO SCO = STrue- (%:==) SCO SCP = SFalse- (%:==) SCO SCQ = SFalse- (%:==) SCO SCR = SFalse- (%:==) SCO SCS = SFalse- (%:==) SCO SCT = SFalse- (%:==) SCO SCU = SFalse- (%:==) SCO SCV = SFalse- (%:==) SCO SCW = SFalse- (%:==) SCO SCX = SFalse- (%:==) SCO SCY = SFalse- (%:==) SCO SCZ = SFalse- (%:==) SCP SCA = SFalse- (%:==) SCP SCB = SFalse- (%:==) SCP SCC = SFalse- (%:==) SCP SCD = SFalse- (%:==) SCP SCE = SFalse- (%:==) SCP SCF = SFalse- (%:==) SCP SCG = SFalse- (%:==) SCP SCH = SFalse- (%:==) SCP SCI = SFalse- (%:==) SCP SCJ = SFalse- (%:==) SCP SCK = SFalse- (%:==) SCP SCL = SFalse- (%:==) SCP SCM = SFalse- (%:==) SCP SCN = SFalse- (%:==) SCP SCO = SFalse- (%:==) SCP SCP = STrue- (%:==) SCP SCQ = SFalse- (%:==) SCP SCR = SFalse- (%:==) SCP SCS = SFalse- (%:==) SCP SCT = SFalse- (%:==) SCP SCU = SFalse- (%:==) SCP SCV = SFalse- (%:==) SCP SCW = SFalse- (%:==) SCP SCX = SFalse- (%:==) SCP SCY = SFalse- (%:==) SCP SCZ = SFalse- (%:==) SCQ SCA = SFalse- (%:==) SCQ SCB = SFalse- (%:==) SCQ SCC = SFalse- (%:==) SCQ SCD = SFalse- (%:==) SCQ SCE = SFalse- (%:==) SCQ SCF = SFalse- (%:==) SCQ SCG = SFalse- (%:==) SCQ SCH = SFalse- (%:==) SCQ SCI = SFalse- (%:==) SCQ SCJ = SFalse- (%:==) SCQ SCK = SFalse- (%:==) SCQ SCL = SFalse- (%:==) SCQ SCM = SFalse- (%:==) SCQ SCN = SFalse- (%:==) SCQ SCO = SFalse- (%:==) SCQ SCP = SFalse- (%:==) SCQ SCQ = STrue- (%:==) SCQ SCR = SFalse- (%:==) SCQ SCS = SFalse- (%:==) SCQ SCT = SFalse- (%:==) SCQ SCU = SFalse- (%:==) SCQ SCV = SFalse- (%:==) SCQ SCW = SFalse- (%:==) SCQ SCX = SFalse- (%:==) SCQ SCY = SFalse- (%:==) SCQ SCZ = SFalse- (%:==) SCR SCA = SFalse- (%:==) SCR SCB = SFalse- (%:==) SCR SCC = SFalse- (%:==) SCR SCD = SFalse- (%:==) SCR SCE = SFalse- (%:==) SCR SCF = SFalse- (%:==) SCR SCG = SFalse- (%:==) SCR SCH = SFalse- (%:==) SCR SCI = SFalse- (%:==) SCR SCJ = SFalse- (%:==) SCR SCK = SFalse- (%:==) SCR SCL = SFalse- (%:==) SCR SCM = SFalse- (%:==) SCR SCN = SFalse- (%:==) SCR SCO = SFalse- (%:==) SCR SCP = SFalse- (%:==) SCR SCQ = SFalse- (%:==) SCR SCR = STrue- (%:==) SCR SCS = SFalse- (%:==) SCR SCT = SFalse- (%:==) SCR SCU = SFalse- (%:==) SCR SCV = SFalse- (%:==) SCR SCW = SFalse- (%:==) SCR SCX = SFalse- (%:==) SCR SCY = SFalse- (%:==) SCR SCZ = SFalse- (%:==) SCS SCA = SFalse- (%:==) SCS SCB = SFalse- (%:==) SCS SCC = SFalse- (%:==) SCS SCD = SFalse- (%:==) SCS SCE = SFalse- (%:==) SCS SCF = SFalse- (%:==) SCS SCG = SFalse- (%:==) SCS SCH = SFalse- (%:==) SCS SCI = SFalse- (%:==) SCS SCJ = SFalse- (%:==) SCS SCK = SFalse- (%:==) SCS SCL = SFalse- (%:==) SCS SCM = SFalse- (%:==) SCS SCN = SFalse- (%:==) SCS SCO = SFalse- (%:==) SCS SCP = SFalse- (%:==) SCS SCQ = SFalse- (%:==) SCS SCR = SFalse- (%:==) SCS SCS = STrue- (%:==) SCS SCT = SFalse- (%:==) SCS SCU = SFalse- (%:==) SCS SCV = SFalse- (%:==) SCS SCW = SFalse- (%:==) SCS SCX = SFalse- (%:==) SCS SCY = SFalse- (%:==) SCS SCZ = SFalse- (%:==) SCT SCA = SFalse- (%:==) SCT SCB = SFalse- (%:==) SCT SCC = SFalse- (%:==) SCT SCD = SFalse- (%:==) SCT SCE = SFalse- (%:==) SCT SCF = SFalse- (%:==) SCT SCG = SFalse- (%:==) SCT SCH = SFalse- (%:==) SCT SCI = SFalse- (%:==) SCT SCJ = SFalse- (%:==) SCT SCK = SFalse- (%:==) SCT SCL = SFalse- (%:==) SCT SCM = SFalse- (%:==) SCT SCN = SFalse- (%:==) SCT SCO = SFalse- (%:==) SCT SCP = SFalse- (%:==) SCT SCQ = SFalse- (%:==) SCT SCR = SFalse- (%:==) SCT SCS = SFalse- (%:==) SCT SCT = STrue- (%:==) SCT SCU = SFalse- (%:==) SCT SCV = SFalse- (%:==) SCT SCW = SFalse- (%:==) SCT SCX = SFalse- (%:==) SCT SCY = SFalse- (%:==) SCT SCZ = SFalse- (%:==) SCU SCA = SFalse- (%:==) SCU SCB = SFalse- (%:==) SCU SCC = SFalse- (%:==) SCU SCD = SFalse- (%:==) SCU SCE = SFalse- (%:==) SCU SCF = SFalse- (%:==) SCU SCG = SFalse- (%:==) SCU SCH = SFalse- (%:==) SCU SCI = SFalse- (%:==) SCU SCJ = SFalse- (%:==) SCU SCK = SFalse- (%:==) SCU SCL = SFalse- (%:==) SCU SCM = SFalse- (%:==) SCU SCN = SFalse- (%:==) SCU SCO = SFalse- (%:==) SCU SCP = SFalse- (%:==) SCU SCQ = SFalse- (%:==) SCU SCR = SFalse- (%:==) SCU SCS = SFalse- (%:==) SCU SCT = SFalse- (%:==) SCU SCU = STrue- (%:==) SCU SCV = SFalse- (%:==) SCU SCW = SFalse- (%:==) SCU SCX = SFalse- (%:==) SCU SCY = SFalse- (%:==) SCU SCZ = SFalse- (%:==) SCV SCA = SFalse- (%:==) SCV SCB = SFalse- (%:==) SCV SCC = SFalse- (%:==) SCV SCD = SFalse- (%:==) SCV SCE = SFalse- (%:==) SCV SCF = SFalse- (%:==) SCV SCG = SFalse- (%:==) SCV SCH = SFalse- (%:==) SCV SCI = SFalse- (%:==) SCV SCJ = SFalse- (%:==) SCV SCK = SFalse- (%:==) SCV SCL = SFalse- (%:==) SCV SCM = SFalse- (%:==) SCV SCN = SFalse- (%:==) SCV SCO = SFalse- (%:==) SCV SCP = SFalse- (%:==) SCV SCQ = SFalse- (%:==) SCV SCR = SFalse- (%:==) SCV SCS = SFalse- (%:==) SCV SCT = SFalse- (%:==) SCV SCU = SFalse- (%:==) SCV SCV = STrue- (%:==) SCV SCW = SFalse- (%:==) SCV SCX = SFalse- (%:==) SCV SCY = SFalse- (%:==) SCV SCZ = SFalse- (%:==) SCW SCA = SFalse- (%:==) SCW SCB = SFalse- (%:==) SCW SCC = SFalse- (%:==) SCW SCD = SFalse- (%:==) SCW SCE = SFalse- (%:==) SCW SCF = SFalse- (%:==) SCW SCG = SFalse- (%:==) SCW SCH = SFalse- (%:==) SCW SCI = SFalse- (%:==) SCW SCJ = SFalse- (%:==) SCW SCK = SFalse- (%:==) SCW SCL = SFalse- (%:==) SCW SCM = SFalse- (%:==) SCW SCN = SFalse- (%:==) SCW SCO = SFalse- (%:==) SCW SCP = SFalse- (%:==) SCW SCQ = SFalse- (%:==) SCW SCR = SFalse- (%:==) SCW SCS = SFalse- (%:==) SCW SCT = SFalse- (%:==) SCW SCU = SFalse- (%:==) SCW SCV = SFalse- (%:==) SCW SCW = STrue- (%:==) SCW SCX = SFalse- (%:==) SCW SCY = SFalse- (%:==) SCW SCZ = SFalse- (%:==) SCX SCA = SFalse- (%:==) SCX SCB = SFalse- (%:==) SCX SCC = SFalse- (%:==) SCX SCD = SFalse- (%:==) SCX SCE = SFalse- (%:==) SCX SCF = SFalse- (%:==) SCX SCG = SFalse- (%:==) SCX SCH = SFalse- (%:==) SCX SCI = SFalse- (%:==) SCX SCJ = SFalse- (%:==) SCX SCK = SFalse- (%:==) SCX SCL = SFalse- (%:==) SCX SCM = SFalse- (%:==) SCX SCN = SFalse- (%:==) SCX SCO = SFalse- (%:==) SCX SCP = SFalse- (%:==) SCX SCQ = SFalse- (%:==) SCX SCR = SFalse- (%:==) SCX SCS = SFalse- (%:==) SCX SCT = SFalse- (%:==) SCX SCU = SFalse- (%:==) SCX SCV = SFalse- (%:==) SCX SCW = SFalse- (%:==) SCX SCX = STrue- (%:==) SCX SCY = SFalse- (%:==) SCX SCZ = SFalse- (%:==) SCY SCA = SFalse- (%:==) SCY SCB = SFalse- (%:==) SCY SCC = SFalse- (%:==) SCY SCD = SFalse- (%:==) SCY SCE = SFalse- (%:==) SCY SCF = SFalse- (%:==) SCY SCG = SFalse- (%:==) SCY SCH = SFalse- (%:==) SCY SCI = SFalse- (%:==) SCY SCJ = SFalse- (%:==) SCY SCK = SFalse- (%:==) SCY SCL = SFalse- (%:==) SCY SCM = SFalse- (%:==) SCY SCN = SFalse- (%:==) SCY SCO = SFalse- (%:==) SCY SCP = SFalse- (%:==) SCY SCQ = SFalse- (%:==) SCY SCR = SFalse- (%:==) SCY SCS = SFalse- (%:==) SCY SCT = SFalse- (%:==) SCY SCU = SFalse- (%:==) SCY SCV = SFalse- (%:==) SCY SCW = SFalse- (%:==) SCY SCX = SFalse- (%:==) SCY SCY = STrue- (%:==) SCY SCZ = SFalse- (%:==) SCZ SCA = SFalse- (%:==) SCZ SCB = SFalse- (%:==) SCZ SCC = SFalse- (%:==) SCZ SCD = SFalse- (%:==) SCZ SCE = SFalse- (%:==) SCZ SCF = SFalse- (%:==) SCZ SCG = SFalse- (%:==) SCZ SCH = SFalse- (%:==) SCZ SCI = SFalse- (%:==) SCZ SCJ = SFalse- (%:==) SCZ SCK = SFalse- (%:==) SCZ SCL = SFalse- (%:==) SCZ SCM = SFalse- (%:==) SCZ SCN = SFalse- (%:==) SCZ SCO = SFalse- (%:==) SCZ SCP = SFalse- (%:==) SCZ SCQ = SFalse- (%:==) SCZ SCR = SFalse- (%:==) SCZ SCS = SFalse- (%:==) SCZ SCT = SFalse- (%:==) SCZ SCU = SFalse- (%:==) SCZ SCV = SFalse- (%:==) SCZ SCW = SFalse- (%:==) SCZ SCX = SFalse- (%:==) SCZ SCY = SFalse- (%:==) SCZ SCZ = STrue- instance SDecide (KProxy :: KProxy AChar) where- (%~) SCA SCA = Proved Refl- (%~) SCA SCB- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCA SCC- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCA SCD- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCA SCE- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCA SCF- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCA SCG- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCA SCH- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCA SCI- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCA SCJ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCA SCK- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCA SCL- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCA SCM- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCA SCN- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCA SCO- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCA SCP- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCA SCQ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCA SCR- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCA SCS- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCA SCT- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCA SCU- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCA SCV- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCA SCW- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCA SCX- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCA SCY- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCA SCZ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCB SCA- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCB SCB = Proved Refl- (%~) SCB SCC- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCB SCD- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCB SCE- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCB SCF- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCB SCG- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCB SCH- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCB SCI- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCB SCJ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCB SCK- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCB SCL- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCB SCM- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCB SCN- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCB SCO- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCB SCP- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCB SCQ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCB SCR- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCB SCS- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCB SCT- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCB SCU- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCB SCV- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCB SCW- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCB SCX- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCB SCY- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCB SCZ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCC SCA- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCC SCB- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCC SCC = Proved Refl- (%~) SCC SCD- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCC SCE- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCC SCF- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCC SCG- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCC SCH- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCC SCI- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCC SCJ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCC SCK- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCC SCL- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCC SCM- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCC SCN- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCC SCO- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCC SCP- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCC SCQ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCC SCR- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCC SCS- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCC SCT- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCC SCU- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCC SCV- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCC SCW- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCC SCX- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCC SCY- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCC SCZ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCD SCA- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCD SCB- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCD SCC- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCD SCD = Proved Refl- (%~) SCD SCE- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCD SCF- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCD SCG- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCD SCH- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCD SCI- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCD SCJ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCD SCK- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCD SCL- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCD SCM- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCD SCN- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCD SCO- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCD SCP- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCD SCQ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCD SCR- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCD SCS- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCD SCT- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCD SCU- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCD SCV- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCD SCW- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCD SCX- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCD SCY- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCD SCZ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCE SCA- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCE SCB- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCE SCC- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCE SCD- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCE SCE = Proved Refl- (%~) SCE SCF- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCE SCG- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCE SCH- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCE SCI- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCE SCJ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCE SCK- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCE SCL- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCE SCM- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCE SCN- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCE SCO- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCE SCP- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCE SCQ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCE SCR- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCE SCS- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCE SCT- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCE SCU- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCE SCV- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCE SCW- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCE SCX- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCE SCY- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCE SCZ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCF SCA- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCF SCB- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCF SCC- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCF SCD- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCF SCE- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCF SCF = Proved Refl- (%~) SCF SCG- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCF SCH- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCF SCI- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCF SCJ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCF SCK- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCF SCL- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCF SCM- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCF SCN- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCF SCO- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCF SCP- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCF SCQ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCF SCR- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCF SCS- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCF SCT- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCF SCU- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCF SCV- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCF SCW- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCF SCX- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCF SCY- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCF SCZ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCG SCA- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCG SCB- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCG SCC- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCG SCD- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCG SCE- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCG SCF- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCG SCG = Proved Refl- (%~) SCG SCH- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCG SCI- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCG SCJ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCG SCK- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCG SCL- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCG SCM- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCG SCN- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCG SCO- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCG SCP- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCG SCQ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCG SCR- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCG SCS- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCG SCT- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCG SCU- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCG SCV- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCG SCW- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCG SCX- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCG SCY- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCG SCZ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCH SCA- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCH SCB- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCH SCC- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCH SCD- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCH SCE- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCH SCF- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCH SCG- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCH SCH = Proved Refl- (%~) SCH SCI- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCH SCJ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCH SCK- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCH SCL- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCH SCM- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCH SCN- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCH SCO- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCH SCP- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCH SCQ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCH SCR- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCH SCS- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCH SCT- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCH SCU- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCH SCV- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCH SCW- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCH SCX- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCH SCY- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCH SCZ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCI SCA- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCI SCB- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCI SCC- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCI SCD- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCI SCE- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCI SCF- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCI SCG- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCI SCH- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCI SCI = Proved Refl- (%~) SCI SCJ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCI SCK- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCI SCL- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCI SCM- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCI SCN- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCI SCO- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCI SCP- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCI SCQ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCI SCR- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCI SCS- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCI SCT- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCI SCU- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCI SCV- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCI SCW- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCI SCX- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCI SCY- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCI SCZ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCJ SCA- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCJ SCB- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCJ SCC- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCJ SCD- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCJ SCE- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCJ SCF- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCJ SCG- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCJ SCH- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCJ SCI- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCJ SCJ = Proved Refl- (%~) SCJ SCK- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCJ SCL- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCJ SCM- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCJ SCN- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCJ SCO- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCJ SCP- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCJ SCQ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCJ SCR- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCJ SCS- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCJ SCT- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCJ SCU- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCJ SCV- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCJ SCW- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCJ SCX- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCJ SCY- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCJ SCZ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCK SCA- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCK SCB- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCK SCC- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCK SCD- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCK SCE- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCK SCF- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCK SCG- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCK SCH- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCK SCI- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCK SCJ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCK SCK = Proved Refl- (%~) SCK SCL- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCK SCM- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCK SCN- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCK SCO- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCK SCP- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCK SCQ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCK SCR- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCK SCS- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCK SCT- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCK SCU- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCK SCV- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCK SCW- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCK SCX- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCK SCY- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCK SCZ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCL SCA- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCL SCB- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCL SCC- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCL SCD- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCL SCE- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCL SCF- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCL SCG- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCL SCH- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCL SCI- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCL SCJ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCL SCK- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCL SCL = Proved Refl- (%~) SCL SCM- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCL SCN- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCL SCO- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCL SCP- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCL SCQ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCL SCR- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCL SCS- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCL SCT- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCL SCU- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCL SCV- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCL SCW- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCL SCX- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCL SCY- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCL SCZ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCM SCA- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCM SCB- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCM SCC- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCM SCD- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCM SCE- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCM SCF- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCM SCG- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCM SCH- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCM SCI- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCM SCJ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCM SCK- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCM SCL- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCM SCM = Proved Refl- (%~) SCM SCN- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCM SCO- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCM SCP- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCM SCQ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCM SCR- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCM SCS- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCM SCT- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCM SCU- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCM SCV- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCM SCW- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCM SCX- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCM SCY- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCM SCZ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCN SCA- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCN SCB- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCN SCC- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCN SCD- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCN SCE- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCN SCF- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCN SCG- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCN SCH- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCN SCI- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCN SCJ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCN SCK- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCN SCL- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCN SCM- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCN SCN = Proved Refl- (%~) SCN SCO- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCN SCP- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCN SCQ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCN SCR- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCN SCS- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCN SCT- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCN SCU- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCN SCV- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCN SCW- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCN SCX- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCN SCY- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCN SCZ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCO SCA- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCO SCB- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCO SCC- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCO SCD- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCO SCE- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCO SCF- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCO SCG- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCO SCH- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCO SCI- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCO SCJ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCO SCK- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCO SCL- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCO SCM- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCO SCN- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCO SCO = Proved Refl- (%~) SCO SCP- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCO SCQ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCO SCR- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCO SCS- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCO SCT- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCO SCU- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCO SCV- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCO SCW- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCO SCX- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCO SCY- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCO SCZ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCP SCA- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCP SCB- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCP SCC- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCP SCD- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCP SCE- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCP SCF- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCP SCG- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCP SCH- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCP SCI- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCP SCJ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCP SCK- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCP SCL- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCP SCM- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCP SCN- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCP SCO- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCP SCP = Proved Refl- (%~) SCP SCQ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCP SCR- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCP SCS- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCP SCT- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCP SCU- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCP SCV- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCP SCW- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCP SCX- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCP SCY- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCP SCZ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCQ SCA- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCQ SCB- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCQ SCC- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCQ SCD- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCQ SCE- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCQ SCF- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCQ SCG- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCQ SCH- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCQ SCI- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCQ SCJ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCQ SCK- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCQ SCL- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCQ SCM- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCQ SCN- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCQ SCO- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCQ SCP- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCQ SCQ = Proved Refl- (%~) SCQ SCR- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCQ SCS- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCQ SCT- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCQ SCU- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCQ SCV- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCQ SCW- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCQ SCX- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCQ SCY- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCQ SCZ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCR SCA- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCR SCB- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCR SCC- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCR SCD- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCR SCE- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCR SCF- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCR SCG- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCR SCH- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCR SCI- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCR SCJ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCR SCK- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCR SCL- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCR SCM- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCR SCN- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCR SCO- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCR SCP- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCR SCQ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCR SCR = Proved Refl- (%~) SCR SCS- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCR SCT- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCR SCU- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCR SCV- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCR SCW- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCR SCX- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCR SCY- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCR SCZ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCS SCA- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCS SCB- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCS SCC- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCS SCD- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCS SCE- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCS SCF- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCS SCG- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCS SCH- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCS SCI- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCS SCJ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCS SCK- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCS SCL- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCS SCM- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCS SCN- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCS SCO- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCS SCP- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCS SCQ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCS SCR- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCS SCS = Proved Refl- (%~) SCS SCT- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCS SCU- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCS SCV- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCS SCW- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCS SCX- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCS SCY- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCS SCZ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCT SCA- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCT SCB- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCT SCC- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCT SCD- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCT SCE- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCT SCF- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCT SCG- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCT SCH- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCT SCI- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCT SCJ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCT SCK- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCT SCL- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCT SCM- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCT SCN- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCT SCO- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCT SCP- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCT SCQ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCT SCR- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCT SCS- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCT SCT = Proved Refl- (%~) SCT SCU- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCT SCV- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCT SCW- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCT SCX- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCT SCY- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCT SCZ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCU SCA- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCU SCB- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCU SCC- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCU SCD- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCU SCE- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCU SCF- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCU SCG- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCU SCH- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCU SCI- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCU SCJ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCU SCK- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCU SCL- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCU SCM- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCU SCN- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCU SCO- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCU SCP- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCU SCQ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCU SCR- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCU SCS- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCU SCT- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCU SCU = Proved Refl- (%~) SCU SCV- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCU SCW- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCU SCX- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCU SCY- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCU SCZ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCV SCA- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCV SCB- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCV SCC- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCV SCD- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCV SCE- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCV SCF- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCV SCG- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCV SCH- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCV SCI- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCV SCJ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCV SCK- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCV SCL- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCV SCM- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCV SCN- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCV SCO- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCV SCP- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCV SCQ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCV SCR- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCV SCS- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCV SCT- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCV SCU- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCV SCV = Proved Refl- (%~) SCV SCW- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCV SCX- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCV SCY- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCV SCZ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCW SCA- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCW SCB- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCW SCC- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCW SCD- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCW SCE- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCW SCF- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCW SCG- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCW SCH- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCW SCI- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCW SCJ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCW SCK- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCW SCL- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCW SCM- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCW SCN- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCW SCO- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCW SCP- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCW SCQ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCW SCR- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCW SCS- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCW SCT- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCW SCU- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCW SCV- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCW SCW = Proved Refl- (%~) SCW SCX- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCW SCY- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCW SCZ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCX SCA- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCX SCB- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCX SCC- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCX SCD- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCX SCE- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCX SCF- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCX SCG- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCX SCH- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCX SCI- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCX SCJ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCX SCK- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCX SCL- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCX SCM- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCX SCN- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCX SCO- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCX SCP- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCX SCQ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCX SCR- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCX SCS- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCX SCT- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCX SCU- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCX SCV- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCX SCW- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCX SCX = Proved Refl- (%~) SCX SCY- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCX SCZ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCY SCA- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCY SCB- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCY SCC- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCY SCD- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCY SCE- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCY SCF- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCY SCG- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCY SCH- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCY SCI- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCY SCJ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCY SCK- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCY SCL- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCY SCM- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCY SCN- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCY SCO- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCY SCP- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCY SCQ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCY SCR- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCY SCS- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCY SCT- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCY SCU- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCY SCV- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCY SCW- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCY SCX- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCY SCY = Proved Refl- (%~) SCY SCZ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCZ SCA- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCZ SCB- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCZ SCC- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCZ SCD- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCZ SCE- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCZ SCF- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCZ SCG- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCZ SCH- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCZ SCI- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCZ SCJ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCZ SCK- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCZ SCL- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCZ SCM- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCZ SCN- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCZ SCO- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCZ SCP- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCZ SCQ- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCZ SCR- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCZ SCS- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCZ SCT- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCZ SCU- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCZ SCV- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCZ SCW- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCZ SCX- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCZ SCY- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SCZ SCZ = Proved Refl- data instance Sing (z :: Attribute)- = forall (n :: [AChar]) (n :: U). z ~ Attr n n =>- SAttr (Sing (n :: [AChar])) (Sing (n :: U))- type SAttribute = (Sing :: Attribute -> *)- instance SingKind (KProxy :: KProxy Attribute) where- type DemoteRep (KProxy :: KProxy Attribute) = Attribute- fromSing (SAttr b b) = Attr (fromSing b) (fromSing b)- toSing (Attr b b)- = case- GHC.Tuple.(,)- (toSing b :: SomeSing (KProxy :: KProxy [AChar]))- (toSing b :: SomeSing (KProxy :: KProxy U))- of {- GHC.Tuple.(,) (SomeSing c) (SomeSing c) -> SomeSing (SAttr c c) }- data instance Sing (z :: Schema)- = forall (n :: [Attribute]). z ~ Sch n =>- SSch (Sing (n :: [Attribute]))- type SSchema = (Sing :: Schema -> *)- instance SingKind (KProxy :: KProxy Schema) where- type DemoteRep (KProxy :: KProxy Schema) = Schema- fromSing (SSch b) = Sch (fromSing b)- toSing (Sch b)- = case toSing b :: SomeSing (KProxy :: KProxy [Attribute]) of {- SomeSing c -> SomeSing (SSch c) }- instance SingI BOOL where- sing = SBOOL- instance SingI STRING where- sing = SSTRING- instance SingI NAT where- sing = SNAT- instance (SingI n, SingI n) =>- SingI (VEC (n :: U) (n :: Nat)) where- sing = SVEC sing sing- instance SingI CA where- sing = SCA- instance SingI CB where- sing = SCB- instance SingI CC where- sing = SCC- instance SingI CD where- sing = SCD- instance SingI CE where- sing = SCE- instance SingI CF where- sing = SCF- instance SingI CG where- sing = SCG- instance SingI CH where- sing = SCH- instance SingI CI where- sing = SCI- instance SingI CJ where- sing = SCJ- instance SingI CK where- sing = SCK- instance SingI CL where- sing = SCL- instance SingI CM where- sing = SCM- instance SingI CN where- sing = SCN- instance SingI CO where- sing = SCO- instance SingI CP where- sing = SCP- instance SingI CQ where- sing = SCQ- instance SingI CR where- sing = SCR- instance SingI CS where- sing = SCS- instance SingI CT where- sing = SCT- instance SingI CU where- sing = SCU- instance SingI CV where- sing = SCV- instance SingI CW where- sing = SCW- instance SingI CX where- sing = SCX- instance SingI CY where- sing = SCY- instance SingI CZ where- sing = SCZ- instance (SingI n, SingI n) =>- SingI (Attr (n :: [AChar]) (n :: U)) where- sing = SAttr sing sing- instance SingI n => SingI (Sch (n :: [Attribute])) where- sing = SSch sing-GradingClient/Database.hs:0:0:: Splicing declarations- return [] ======>-GradingClient/Database.hs:(0,0)-(0,0): Splicing expression- cases ''Row [| r |] [| changeId (n ++ (getId r)) r |]- ======>- case r of {- EmptyRow _ -> changeId ((++) n (getId r)) r- ConsRow _ _ -> changeId ((++) n (getId r)) r }
tests/compile-and-dump/GradingClient/Database.ghc80.template view
@@ -11,7 +11,7 @@ Equals_0123456789 Zero Zero = TrueSym0 Equals_0123456789 (Succ a) (Succ b) = (:==) a b Equals_0123456789 (a :: Nat) (b :: Nat) = FalseSym0- instance PEq (KProxy :: KProxy Nat) where+ instance PEq (Proxy :: Proxy Nat) where type (:==) (a :: Nat) (b :: Nat) = Equals_0123456789 a b type ZeroSym0 = Zero type SuccSym1 (t :: Nat) = Succ t@@ -47,26 +47,26 @@ = forall arg. KindOf (Apply Compare_0123456789Sym0 arg) ~ KindOf (Compare_0123456789Sym1 arg) => Compare_0123456789Sym0KindInference type instance Apply Compare_0123456789Sym0 l = Compare_0123456789Sym1 l- instance POrd (KProxy :: KProxy Nat) where+ instance POrd (Proxy :: Proxy Nat) where type Compare (a :: Nat) (a :: Nat) = Apply (Apply Compare_0123456789Sym0 a) a data instance Sing (z :: Nat) = z ~ Zero => SZero | forall (n :: Nat). z ~ Succ n => SSucc (Sing (n :: Nat)) type SNat = (Sing :: Nat -> Type)- instance SingKind (KProxy :: KProxy Nat) where- type DemoteRep (KProxy :: KProxy Nat) = Nat+ instance SingKind Nat where+ type DemoteRep Nat = Nat fromSing SZero = Zero fromSing (SSucc b) = Succ (fromSing b) toSing Zero = SomeSing SZero toSing (Succ b)- = case toSing b :: SomeSing (KProxy :: KProxy Nat) of {+ = case toSing b :: SomeSing Nat of { SomeSing c -> SomeSing (SSucc c) }- instance SEq (KProxy :: KProxy Nat) where+ instance SEq Nat where (%:==) SZero SZero = STrue (%:==) SZero (SSucc _) = SFalse (%:==) (SSucc _) SZero = SFalse (%:==) (SSucc a) (SSucc b) = (%:==) a b- instance SDecide (KProxy :: KProxy Nat) where+ instance SDecide Nat where (%~) SZero SZero = Proved Refl (%~) SZero (SSucc _) = Disproved@@ -83,8 +83,7 @@ Proved Refl -> Proved Refl Disproved contra -> Disproved (\ refl -> case refl of { Refl -> contra Refl }) }- instance SOrd (KProxy :: KProxy Nat) =>- SOrd (KProxy :: KProxy Nat) where+ instance SOrd Nat => SOrd Nat where sCompare :: forall (t0 :: Nat) (t1 :: Nat). Sing t0@@ -265,7 +264,7 @@ Equals_0123456789 NAT NAT = TrueSym0 Equals_0123456789 (VEC a a) (VEC b b) = (:&&) ((:==) a b) ((:==) a b) Equals_0123456789 (a :: U) (b :: U) = FalseSym0- instance PEq (KProxy :: KProxy U) where+ instance PEq (Proxy :: Proxy U) where type (:==) (a :: U) (b :: U) = Equals_0123456789 a b type BOOLSym0 = BOOL type STRINGSym0 = STRING@@ -314,7 +313,7 @@ Equals_0123456789 CY CY = TrueSym0 Equals_0123456789 CZ CZ = TrueSym0 Equals_0123456789 (a :: AChar) (b :: AChar) = FalseSym0- instance PEq (KProxy :: KProxy AChar) where+ instance PEq (Proxy :: Proxy AChar) where type (:==) (a :: AChar) (b :: AChar) = Equals_0123456789 a b type CASym0 = CA type CBSym0 = CB@@ -671,8 +670,8 @@ forall (n :: U) (n :: Nat). z ~ VEC n n => SVEC (Sing (n :: U)) (Sing (n :: Nat)) type SU = (Sing :: U -> Type)- instance SingKind (KProxy :: KProxy U) where- type DemoteRep (KProxy :: KProxy U) = U+ instance SingKind U where+ type DemoteRep U = U fromSing SBOOL = BOOL fromSing SSTRING = STRING fromSing SNAT = NAT@@ -682,12 +681,10 @@ toSing NAT = SomeSing SNAT toSing (VEC b b) = case- GHC.Tuple.(,)- (toSing b :: SomeSing (KProxy :: KProxy U))- (toSing b :: SomeSing (KProxy :: KProxy Nat))+ GHC.Tuple.(,) (toSing b :: SomeSing U) (toSing b :: SomeSing Nat) of { GHC.Tuple.(,) (SomeSing c) (SomeSing c) -> SomeSing (SVEC c c) }- instance SEq (KProxy :: KProxy U) where+ instance SEq U where (%:==) SBOOL SBOOL = STrue (%:==) SBOOL SSTRING = SFalse (%:==) SBOOL SNAT = SFalse@@ -704,7 +701,7 @@ (%:==) (SVEC _ _) SSTRING = SFalse (%:==) (SVEC _ _) SNAT = SFalse (%:==) (SVEC a a) (SVEC b b) = (%:&&) ((%:==) a b) ((%:==) a b)- instance SDecide (KProxy :: KProxy U) where+ instance SDecide U where (%~) SBOOL SBOOL = Proved Refl (%~) SBOOL SSTRING = Disproved@@ -803,8 +800,8 @@ z ~ CY => SCY | z ~ CZ => SCZ type SAChar = (Sing :: AChar -> Type)- instance SingKind (KProxy :: KProxy AChar) where- type DemoteRep (KProxy :: KProxy AChar) = AChar+ instance SingKind AChar where+ type DemoteRep AChar = AChar fromSing SCA = CA fromSing SCB = CB fromSing SCC = CC@@ -857,7 +854,7 @@ toSing CX = SomeSing SCX toSing CY = SomeSing SCY toSing CZ = SomeSing SCZ- instance SEq (KProxy :: KProxy AChar) where+ instance SEq AChar where (%:==) SCA SCA = STrue (%:==) SCA SCB = SFalse (%:==) SCA SCC = SFalse@@ -1534,7 +1531,7 @@ (%:==) SCZ SCX = SFalse (%:==) SCZ SCY = SFalse (%:==) SCZ SCZ = STrue- instance SDecide (KProxy :: KProxy AChar) where+ instance SDecide AChar where (%~) SCA SCA = Proved Refl (%~) SCA SCB = Disproved@@ -4815,25 +4812,24 @@ = forall (n :: [AChar]) (n :: U). z ~ Attr n n => SAttr (Sing (n :: [AChar])) (Sing (n :: U)) type SAttribute = (Sing :: Attribute -> Type)- instance SingKind (KProxy :: KProxy Attribute) where- type DemoteRep (KProxy :: KProxy Attribute) = Attribute+ instance SingKind Attribute where+ type DemoteRep Attribute = Attribute fromSing (SAttr b b) = Attr (fromSing b) (fromSing b) toSing (Attr b b) = case GHC.Tuple.(,)- (toSing b :: SomeSing (KProxy :: KProxy [AChar]))- (toSing b :: SomeSing (KProxy :: KProxy U))+ (toSing b :: SomeSing [AChar]) (toSing b :: SomeSing U) of { GHC.Tuple.(,) (SomeSing c) (SomeSing c) -> SomeSing (SAttr c c) } data instance Sing (z :: Schema) = forall (n :: [Attribute]). z ~ Sch n => SSch (Sing (n :: [Attribute])) type SSchema = (Sing :: Schema -> Type)- instance SingKind (KProxy :: KProxy Schema) where- type DemoteRep (KProxy :: KProxy Schema) = Schema+ instance SingKind Schema where+ type DemoteRep Schema = Schema fromSing (SSch b) = Sch (fromSing b) toSing (Sch b)- = case toSing b :: SomeSing (KProxy :: KProxy [Attribute]) of {+ = case toSing b :: SomeSing [Attribute] of { SomeSing c -> SomeSing (SSch c) } instance SingI BOOL where sing = SBOOL
tests/compile-and-dump/GradingClient/Database.hs view
@@ -28,6 +28,7 @@ import Data.Singletons.TH import Control.Monad import Data.List hiding ( tail )+import Data.Kind #ifdef MODERN_MTL import Control.Monad.Except ( throwError )@@ -35,9 +36,6 @@ import Control.Monad.Error ( throwError ) #endif -#if __GLASGOW_HASKELL__ >= 711-import Data.Kind-#endif $(singletons [d| -- Basic Nat type@@ -494,9 +492,6 @@ -- for incomplete pattern matches when the remaining cases are impossible. -- So, we include this case (impossible to reach for any terminated value) -- to suppress the warning.-#if __GLASGOW_HASKELL__ < 711- _ -> error "Type checking failed"-#endif -- Retrieves the element, looked up by the name of the provided attribute, -- from a row. The explicit quantification is necessary to create the scoped@@ -507,15 +502,9 @@ InElt -> case r of ConsRow h _ -> h -- EmptyRow _ -> undefined <== IMPOSSIBLE-#if __GLASGOW_HASKELL__ < 711- _ -> error "Type checking failed"-#endif InTail -> case r of ConsRow _ t -> extractElt attr t -- EmptyRow _ -> undefined <== IMPOSSBLE-#if __GLASGOW_HASKELL__ < 711- _ -> error "Type checking failed"-#endif query (Select expr r) = do rows <- query r@@ -534,10 +523,6 @@ case name %:== name' of STrue -> h SFalse -> withSingI stail (eval (Element (SSch stail) name) t)- _ -> bugInGHC-#if __GLASGOW_HASKELL__ < 711- _ -> bugInGHC-#endif eval (Equal (e1 :: Expr s' u') e2) row = let v1 = eval e1 row
− tests/compile-and-dump/GradingClient/Main.ghc710.template
@@ -1,162 +0,0 @@-GradingClient/Main.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| lastName, firstName, yearName, gradeName, majorName :: [AChar]- lastName = [CL, CA, CS, CT]- firstName = [CF, CI, CR, CS, CT]- yearName = [CY, CE, CA, CR]- gradeName = [CG, CR, CA, CD, CE]- majorName = [CM, CA, CJ, CO, CR]- gradingSchema :: Schema- gradingSchema- = Sch- [Attr lastName STRING, Attr firstName STRING, Attr yearName NAT,- Attr gradeName NAT, Attr majorName BOOL]- names :: Schema- names = Sch [Attr firstName STRING, Attr lastName STRING] |]- ======>- lastName :: [AChar]- firstName :: [AChar]- yearName :: [AChar]- gradeName :: [AChar]- majorName :: [AChar]- lastName = [CL, CA, CS, CT]- firstName = [CF, CI, CR, CS, CT]- yearName = [CY, CE, CA, CR]- gradeName = [CG, CR, CA, CD, CE]- majorName = [CM, CA, CJ, CO, CR]- gradingSchema :: Schema- gradingSchema- = Sch- [Attr lastName STRING, Attr firstName STRING, Attr yearName NAT,- Attr gradeName NAT, Attr majorName BOOL]- names :: Schema- names = Sch [Attr firstName STRING, Attr lastName STRING]- type MajorNameSym0 = MajorName- type GradeNameSym0 = GradeName- type YearNameSym0 = YearName- type FirstNameSym0 = FirstName- type LastNameSym0 = LastName- type GradingSchemaSym0 = GradingSchema- type NamesSym0 = Names- type family MajorName :: [AChar] where- MajorName = Apply (Apply (:$) CMSym0) (Apply (Apply (:$) CASym0) (Apply (Apply (:$) CJSym0) (Apply (Apply (:$) COSym0) (Apply (Apply (:$) CRSym0) '[]))))- type family GradeName :: [AChar] where- GradeName = Apply (Apply (:$) CGSym0) (Apply (Apply (:$) CRSym0) (Apply (Apply (:$) CASym0) (Apply (Apply (:$) CDSym0) (Apply (Apply (:$) CESym0) '[]))))- type family YearName :: [AChar] where- YearName = Apply (Apply (:$) CYSym0) (Apply (Apply (:$) CESym0) (Apply (Apply (:$) CASym0) (Apply (Apply (:$) CRSym0) '[])))- type family FirstName :: [AChar] where- FirstName = Apply (Apply (:$) CFSym0) (Apply (Apply (:$) CISym0) (Apply (Apply (:$) CRSym0) (Apply (Apply (:$) CSSym0) (Apply (Apply (:$) CTSym0) '[]))))- type family LastName :: [AChar] where- LastName = Apply (Apply (:$) CLSym0) (Apply (Apply (:$) CASym0) (Apply (Apply (:$) CSSym0) (Apply (Apply (:$) CTSym0) '[])))- type family GradingSchema :: Schema where- GradingSchema = Apply SchSym0 (Apply (Apply (:$) (Apply (Apply AttrSym0 LastNameSym0) STRINGSym0)) (Apply (Apply (:$) (Apply (Apply AttrSym0 FirstNameSym0) STRINGSym0)) (Apply (Apply (:$) (Apply (Apply AttrSym0 YearNameSym0) NATSym0)) (Apply (Apply (:$) (Apply (Apply AttrSym0 GradeNameSym0) NATSym0)) (Apply (Apply (:$) (Apply (Apply AttrSym0 MajorNameSym0) BOOLSym0)) '[])))))- type family Names :: Schema where- Names = Apply SchSym0 (Apply (Apply (:$) (Apply (Apply AttrSym0 FirstNameSym0) STRINGSym0)) (Apply (Apply (:$) (Apply (Apply AttrSym0 LastNameSym0) STRINGSym0)) '[]))- sMajorName :: Sing (MajorNameSym0 :: [AChar])- sGradeName :: Sing (GradeNameSym0 :: [AChar])- sYearName :: Sing (YearNameSym0 :: [AChar])- sFirstName :: Sing (FirstNameSym0 :: [AChar])- sLastName :: Sing (LastNameSym0 :: [AChar])- sGradingSchema :: Sing (GradingSchemaSym0 :: Schema)- sNames :: Sing (NamesSym0 :: Schema)- sMajorName- = applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) SCM)- (applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) SCA)- (applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) SCJ)- (applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) SCO)- (applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) SCR) SNil))))- sGradeName- = applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) SCG)- (applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) SCR)- (applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) SCA)- (applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) SCD)- (applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) SCE) SNil))))- sYearName- = applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) SCY)- (applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) SCE)- (applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) SCA)- (applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) SCR) SNil)))- sFirstName- = applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) SCF)- (applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) SCI)- (applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) SCR)- (applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) SCS)- (applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) SCT) SNil))))- sLastName- = applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) SCL)- (applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) SCA)- (applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) SCS)- (applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) SCT) SNil)))- sGradingSchema- = applySing- (singFun1 (Proxy :: Proxy SchSym0) SSch)- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (applySing (singFun2 (Proxy :: Proxy AttrSym0) SAttr) sLastName)- SSTRING))- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (applySing (singFun2 (Proxy :: Proxy AttrSym0) SAttr) sFirstName)- SSTRING))- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (applySing (singFun2 (Proxy :: Proxy AttrSym0) SAttr) sYearName)- SNAT))- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (applySing (singFun2 (Proxy :: Proxy AttrSym0) SAttr) sGradeName)- SNAT))- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (applySing (singFun2 (Proxy :: Proxy AttrSym0) SAttr) sMajorName)- SBOOL))- SNil)))))- sNames- = applySing- (singFun1 (Proxy :: Proxy SchSym0) SSch)- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (applySing (singFun2 (Proxy :: Proxy AttrSym0) SAttr) sFirstName)- SSTRING))- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (applySing (singFun2 (Proxy :: Proxy AttrSym0) SAttr) sLastName)- SSTRING))- SNil))
− tests/compile-and-dump/InsertionSort/InsertionSortImp.ghc710.template
@@ -1,234 +0,0 @@-InsertionSort/InsertionSortImp.hs:(0,0)-(0,0): Splicing declarations- singletons [d| data Nat = Zero | Succ Nat |]- ======>- data Nat = Zero | Succ Nat- type ZeroSym0 = Zero- type SuccSym1 (t :: Nat) = Succ t- instance SuppressUnusedWarnings SuccSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) SuccSym0KindInference GHC.Tuple.())- data SuccSym0 (l :: TyFun Nat Nat)- = forall arg. KindOf (Apply SuccSym0 arg) ~ KindOf (SuccSym1 arg) =>- SuccSym0KindInference- type instance Apply SuccSym0 l = SuccSym1 l- data instance Sing (z :: Nat)- = z ~ Zero => SZero |- forall (n :: Nat). z ~ Succ n => SSucc (Sing (n :: Nat))- type SNat = (Sing :: Nat -> *)- instance SingKind (KProxy :: KProxy Nat) where- type DemoteRep (KProxy :: KProxy Nat) = Nat- fromSing SZero = Zero- fromSing (SSucc b) = Succ (fromSing b)- toSing Zero = SomeSing SZero- toSing (Succ b)- = case toSing b :: SomeSing (KProxy :: KProxy Nat) of {- SomeSing c -> SomeSing (SSucc c) }- instance SingI Zero where- sing = SZero- instance SingI n => SingI (Succ (n :: Nat)) where- sing = SSucc sing-InsertionSort/InsertionSortImp.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| leq :: Nat -> Nat -> Bool- leq Zero _ = True- leq (Succ _) Zero = False- leq (Succ a) (Succ b) = leq a b- insert :: Nat -> [Nat] -> [Nat]- insert n [] = [n]- insert n (h : t)- = if leq n h then (n : h : t) else h : (insert n t)- insertionSort :: [Nat] -> [Nat]- insertionSort [] = []- insertionSort (h : t) = insert h (insertionSort t) |]- ======>- leq :: Nat -> Nat -> Bool- leq Zero _ = True- leq (Succ _) Zero = False- leq (Succ a) (Succ b) = leq a b- insert :: Nat -> [Nat] -> [Nat]- insert n GHC.Types.[] = [n]- insert n (h GHC.Types.: t)- = if leq n h then- (n GHC.Types.: (h GHC.Types.: t))- else- (h GHC.Types.: (insert n t))- insertionSort :: [Nat] -> [Nat]- insertionSort GHC.Types.[] = []- insertionSort (h GHC.Types.: t) = insert h (insertionSort t)- type Let0123456789Scrutinee_0123456789Sym3 t t t =- Let0123456789Scrutinee_0123456789 t t t- instance SuppressUnusedWarnings Let0123456789Scrutinee_0123456789Sym2 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,)- Let0123456789Scrutinee_0123456789Sym2KindInference GHC.Tuple.())- data Let0123456789Scrutinee_0123456789Sym2 l l l- = forall arg. KindOf (Apply (Let0123456789Scrutinee_0123456789Sym2 l l) arg) ~ KindOf (Let0123456789Scrutinee_0123456789Sym3 l l arg) =>- Let0123456789Scrutinee_0123456789Sym2KindInference- type instance Apply (Let0123456789Scrutinee_0123456789Sym2 l l) l = Let0123456789Scrutinee_0123456789Sym3 l l l- instance SuppressUnusedWarnings Let0123456789Scrutinee_0123456789Sym1 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,)- Let0123456789Scrutinee_0123456789Sym1KindInference GHC.Tuple.())- data Let0123456789Scrutinee_0123456789Sym1 l l- = forall arg. KindOf (Apply (Let0123456789Scrutinee_0123456789Sym1 l) arg) ~ KindOf (Let0123456789Scrutinee_0123456789Sym2 l arg) =>- Let0123456789Scrutinee_0123456789Sym1KindInference- type instance Apply (Let0123456789Scrutinee_0123456789Sym1 l) l = Let0123456789Scrutinee_0123456789Sym2 l l- instance SuppressUnusedWarnings Let0123456789Scrutinee_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,)- Let0123456789Scrutinee_0123456789Sym0KindInference GHC.Tuple.())- data Let0123456789Scrutinee_0123456789Sym0 l- = forall arg. KindOf (Apply Let0123456789Scrutinee_0123456789Sym0 arg) ~ KindOf (Let0123456789Scrutinee_0123456789Sym1 arg) =>- Let0123456789Scrutinee_0123456789Sym0KindInference- type instance Apply Let0123456789Scrutinee_0123456789Sym0 l = Let0123456789Scrutinee_0123456789Sym1 l- type family Let0123456789Scrutinee_0123456789 n h t where- Let0123456789Scrutinee_0123456789 n h t = Apply (Apply LeqSym0 n) h- type family Case_0123456789 n h t t where- Case_0123456789 n h t True = Apply (Apply (:$) n) (Apply (Apply (:$) h) t)- Case_0123456789 n h t False = Apply (Apply (:$) h) (Apply (Apply InsertSym0 n) t)- type LeqSym2 (t :: Nat) (t :: Nat) = Leq t t- instance SuppressUnusedWarnings LeqSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) LeqSym1KindInference GHC.Tuple.())- data LeqSym1 (l :: Nat) (l :: TyFun Nat Bool)- = forall arg. KindOf (Apply (LeqSym1 l) arg) ~ KindOf (LeqSym2 l arg) =>- LeqSym1KindInference- type instance Apply (LeqSym1 l) l = LeqSym2 l l- instance SuppressUnusedWarnings LeqSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) LeqSym0KindInference GHC.Tuple.())- data LeqSym0 (l :: TyFun Nat (TyFun Nat Bool -> *))- = forall arg. KindOf (Apply LeqSym0 arg) ~ KindOf (LeqSym1 arg) =>- LeqSym0KindInference- type instance Apply LeqSym0 l = LeqSym1 l- type InsertSym2 (t :: Nat) (t :: [Nat]) = Insert t t- instance SuppressUnusedWarnings InsertSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) InsertSym1KindInference GHC.Tuple.())- data InsertSym1 (l :: Nat) (l :: TyFun [Nat] [Nat])- = forall arg. KindOf (Apply (InsertSym1 l) arg) ~ KindOf (InsertSym2 l arg) =>- InsertSym1KindInference- type instance Apply (InsertSym1 l) l = InsertSym2 l l- instance SuppressUnusedWarnings InsertSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) InsertSym0KindInference GHC.Tuple.())- data InsertSym0 (l :: TyFun Nat (TyFun [Nat] [Nat] -> *))- = forall arg. KindOf (Apply InsertSym0 arg) ~ KindOf (InsertSym1 arg) =>- InsertSym0KindInference- type instance Apply InsertSym0 l = InsertSym1 l- type InsertionSortSym1 (t :: [Nat]) = InsertionSort t- instance SuppressUnusedWarnings InsertionSortSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) InsertionSortSym0KindInference GHC.Tuple.())- data InsertionSortSym0 (l :: TyFun [Nat] [Nat])- = forall arg. KindOf (Apply InsertionSortSym0 arg) ~ KindOf (InsertionSortSym1 arg) =>- InsertionSortSym0KindInference- type instance Apply InsertionSortSym0 l = InsertionSortSym1 l- type family Leq (a :: Nat) (a :: Nat) :: Bool where- Leq Zero _z_0123456789 = TrueSym0- Leq (Succ _z_0123456789) Zero = FalseSym0- Leq (Succ a) (Succ b) = Apply (Apply LeqSym0 a) b- type family Insert (a :: Nat) (a :: [Nat]) :: [Nat] where- Insert n '[] = Apply (Apply (:$) n) '[]- Insert n ((:) h t) = Case_0123456789 n h t (Let0123456789Scrutinee_0123456789Sym3 n h t)- type family InsertionSort (a :: [Nat]) :: [Nat] where- InsertionSort '[] = '[]- InsertionSort ((:) h t) = Apply (Apply InsertSym0 h) (Apply InsertionSortSym0 t)- sLeq ::- forall (t :: Nat) (t :: Nat).- Sing t -> Sing t -> Sing (Apply (Apply LeqSym0 t) t :: Bool)- sInsert ::- forall (t :: Nat) (t :: [Nat]).- Sing t -> Sing t -> Sing (Apply (Apply InsertSym0 t) t :: [Nat])- sInsertionSort ::- forall (t :: [Nat]).- Sing t -> Sing (Apply InsertionSortSym0 t :: [Nat])- sLeq SZero _s_z_0123456789- = let- lambda ::- forall _z_0123456789. (t ~ ZeroSym0, t ~ _z_0123456789) =>- Sing _z_0123456789 -> Sing (Apply (Apply LeqSym0 t) t :: Bool)- lambda _z_0123456789 = STrue- in lambda _s_z_0123456789- sLeq (SSucc _s_z_0123456789) SZero- = let- lambda ::- forall _z_0123456789. (t ~ Apply SuccSym0 _z_0123456789,- t ~ ZeroSym0) =>- Sing _z_0123456789 -> Sing (Apply (Apply LeqSym0 t) t :: Bool)- lambda _z_0123456789 = SFalse- in lambda _s_z_0123456789- sLeq (SSucc sA) (SSucc sB)- = let- lambda ::- forall a b. (t ~ Apply SuccSym0 a, t ~ Apply SuccSym0 b) =>- Sing a -> Sing b -> Sing (Apply (Apply LeqSym0 t) t :: Bool)- lambda a b- = applySing- (applySing (singFun2 (Proxy :: Proxy LeqSym0) sLeq) a) b- in lambda sA sB- sInsert sN SNil- = let- lambda ::- forall n. (t ~ n, t ~ '[]) =>- Sing n -> Sing (Apply (Apply InsertSym0 t) t :: [Nat])- lambda n- = applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) n) SNil- in lambda sN- sInsert sN (SCons sH sT)- = let- lambda ::- forall n h t. (t ~ n, t ~ Apply (Apply (:$) h) t) =>- Sing n- -> Sing h -> Sing t -> Sing (Apply (Apply InsertSym0 t) t :: [Nat])- lambda n h t- = let- sScrutinee_0123456789 ::- Sing (Let0123456789Scrutinee_0123456789Sym3 n h t)- sScrutinee_0123456789- = applySing- (applySing (singFun2 (Proxy :: Proxy LeqSym0) sLeq) n) h- in case sScrutinee_0123456789 of {- STrue- -> let- lambda ::- TrueSym0 ~ Let0123456789Scrutinee_0123456789Sym3 n h t =>- Sing (Case_0123456789 n h t TrueSym0 :: [Nat])- lambda- = applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) n)- (applySing (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) h) t)- in lambda- SFalse- -> let- lambda ::- FalseSym0 ~ Let0123456789Scrutinee_0123456789Sym3 n h t =>- Sing (Case_0123456789 n h t FalseSym0 :: [Nat])- lambda- = applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) h)- (applySing- (applySing (singFun2 (Proxy :: Proxy InsertSym0) sInsert) n) t)- in lambda } ::- Sing (Case_0123456789 n h t (Let0123456789Scrutinee_0123456789Sym3 n h t) :: [Nat])- in lambda sN sH sT- sInsertionSort SNil- = let- lambda :: t ~ '[] => Sing (Apply InsertionSortSym0 t :: [Nat])- lambda = SNil- in lambda- sInsertionSort (SCons sH sT)- = let- lambda ::- forall h t. t ~ Apply (Apply (:$) h) t =>- Sing h -> Sing t -> Sing (Apply InsertionSortSym0 t :: [Nat])- lambda h t- = applySing- (applySing (singFun2 (Proxy :: Proxy InsertSym0) sInsert) h)- (applySing- (singFun1 (Proxy :: Proxy InsertionSortSym0) sInsertionSort) t)- in lambda sH sT
tests/compile-and-dump/InsertionSort/InsertionSortImp.ghc80.template view
@@ -15,13 +15,13 @@ = z ~ Zero => SZero | forall (n :: Nat). z ~ Succ n => SSucc (Sing (n :: Nat)) type SNat = (Sing :: Nat -> GHC.Types.Type)- instance SingKind (KProxy :: KProxy Nat) where- type DemoteRep (KProxy :: KProxy Nat) = Nat+ instance SingKind Nat where+ type DemoteRep Nat = Nat fromSing SZero = Zero fromSing (SSucc b) = Succ (fromSing b) toSing Zero = SomeSing SZero toSing (Succ b)- = case toSing b :: SomeSing (KProxy :: KProxy Nat) of {+ = case toSing b :: SomeSing Nat of { SomeSing c -> SomeSing (SSucc c) } instance SingI Zero where sing = SZero
tests/compile-and-dump/InsertionSort/InsertionSortImp.hs view
@@ -27,17 +27,14 @@ -} -{-# LANGUAGE IncoherentInstances, ConstraintKinds, CPP, TypeFamilies,+{-# LANGUAGE IncoherentInstances, ConstraintKinds, TypeFamilies, TemplateHaskell, RankNTypes, ScopedTypeVariables, GADTs, TypeOperators, DataKinds, PolyKinds, MultiParamTypeClasses, FlexibleContexts, FlexibleInstances, UndecidableInstances #-} module InsertionSort.InsertionSortImp where -#if __GLASGOW_HASKELL__ >= 711 import Data.Kind (type (*))-#endif- import Data.Singletons.Prelude import Data.Singletons.SuppressUnusedWarnings import Data.Singletons.TH@@ -131,9 +128,6 @@ -- (SSucc _, SZero) -> undefined <== IMPOSSIBLE (SSucc a', SSucc b') -> case sLeq_true__le a' b' of Dict -> Dict-#if __GLASGOW_HASKELL__ < 711- _ -> error "type checking failed"-#endif -- A lemma that states if sLeq a b is SFalse, then (b :<=: a) sLeq_false__nle :: (Leq a b ~ False) => SNat a -> SNat b -> Dict (b :<=: a)@@ -143,9 +137,6 @@ (SSucc _, SZero) -> Dict (SSucc a', SSucc b') -> case sLeq_false__nle a' b' of Dict -> Dict-#if __GLASGOW_HASKELL__ < 711- _ -> error "type checking failed"-#endif -- A lemma that states that inserting into an ascending list produces an -- ascending list@@ -159,9 +150,6 @@ SCons h _ -> case sLeq n h of -- then check if n is <= h STrue -> case sLeq_true__le n h of Dict -> Dict -- if so, we're done SFalse -> case sLeq_false__nle n h of Dict -> Dict -- if not, we're done-#if __GLASGOW_HASKELL__ < 711- _ -> error "type checking failed"-#endif AscCons -> case lst of -- Otherwise, if lst is more than one element... -- SNil -> undefined <== IMPOSSIBLE SCons h t -> case sLeq n h of -- then check if n is <= h@@ -174,10 +162,6 @@ case sLeq_true__le n h2 of Dict -> Dict SFalse -> -- otherwise, show that (Insert n t) is sorted case insert_ascending n t of Dict -> Dict -- and we're done-#if __GLASGOW_HASKELL__ < 711- _ -> error "type checking failed"- _ -> error "type checking failed"-#endif -- A lemma that states that inserting n into lst produces a new list with n -- inserted into lst.
− tests/compile-and-dump/Promote/Constructors.ghc710.template
@@ -1,79 +0,0 @@-Promote/Constructors.hs:(0,0)-(0,0): Splicing declarations- promote- [d| data Foo = Foo | Foo :+ Foo- data Bar = Bar Bar Bar Bar Bar Foo |]- ======>- data Foo = Foo | Foo :+ Foo- data Bar = Bar Bar Bar Bar Bar Foo- type FooSym0 = Foo- type (:+$$$) (t :: Foo) (t :: Foo) = (:+) t t- instance SuppressUnusedWarnings (:+$$) where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) (:+$$###) GHC.Tuple.())- data (:+$$) (l :: Foo) (l :: TyFun Foo Foo)- = forall arg. KindOf (Apply ((:+$$) l) arg) ~ KindOf ((:+$$$) l arg) =>- :+$$###- type instance Apply ((:+$$) l) l = (:+$$$) l l- instance SuppressUnusedWarnings (:+$) where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) (:+$###) GHC.Tuple.())- data (:+$) (l :: TyFun Foo (TyFun Foo Foo -> *))- = forall arg. KindOf (Apply (:+$) arg) ~ KindOf ((:+$$) arg) =>- :+$###- type instance Apply (:+$) l = (:+$$) l- type BarSym5 (t :: Bar)- (t :: Bar)- (t :: Bar)- (t :: Bar)- (t :: Foo) =- Bar t t t t t- instance SuppressUnusedWarnings BarSym4 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) BarSym4KindInference GHC.Tuple.())- data BarSym4 (l :: Bar)- (l :: Bar)- (l :: Bar)- (l :: Bar)- (l :: TyFun Foo Bar)- = forall arg. KindOf (Apply (BarSym4 l l l l) arg) ~ KindOf (BarSym5 l l l l arg) =>- BarSym4KindInference- type instance Apply (BarSym4 l l l l) l = BarSym5 l l l l l- instance SuppressUnusedWarnings BarSym3 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) BarSym3KindInference GHC.Tuple.())- data BarSym3 (l :: Bar)- (l :: Bar)- (l :: Bar)- (l :: TyFun Bar (TyFun Foo Bar -> *))- = forall arg. KindOf (Apply (BarSym3 l l l) arg) ~ KindOf (BarSym4 l l l arg) =>- BarSym3KindInference- type instance Apply (BarSym3 l l l) l = BarSym4 l l l l- instance SuppressUnusedWarnings BarSym2 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) BarSym2KindInference GHC.Tuple.())- data BarSym2 (l :: Bar)- (l :: Bar)- (l :: TyFun Bar (TyFun Bar (TyFun Foo Bar -> *) -> *))- = forall arg. KindOf (Apply (BarSym2 l l) arg) ~ KindOf (BarSym3 l l arg) =>- BarSym2KindInference- type instance Apply (BarSym2 l l) l = BarSym3 l l l- instance SuppressUnusedWarnings BarSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) BarSym1KindInference GHC.Tuple.())- data BarSym1 (l :: Bar)- (l :: TyFun Bar (TyFun Bar (TyFun Bar (TyFun Foo Bar -> *) -> *)- -> *))- = forall arg. KindOf (Apply (BarSym1 l) arg) ~ KindOf (BarSym2 l arg) =>- BarSym1KindInference- type instance Apply (BarSym1 l) l = BarSym2 l l- instance SuppressUnusedWarnings BarSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) BarSym0KindInference GHC.Tuple.())- data BarSym0 (l :: TyFun Bar (TyFun Bar (TyFun Bar (TyFun Bar (TyFun Foo Bar- -> *)- -> *)- -> *)- -> *))- = forall arg. KindOf (Apply BarSym0 arg) ~ KindOf (BarSym1 arg) =>- BarSym0KindInference- type instance Apply BarSym0 l = BarSym1 l
− tests/compile-and-dump/Promote/GenDefunSymbols.ghc710.template
@@ -1,46 +0,0 @@-Promote/GenDefunSymbols.hs:0:0:: Splicing declarations- genDefunSymbols [''LiftMaybe, ''NatT, '':+]- ======>- type LiftMaybeSym2 (t :: TyFun a0123456789 b0123456789 -> *)- (t :: Maybe a0123456789) =- LiftMaybe t t- instance SuppressUnusedWarnings LiftMaybeSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) LiftMaybeSym1KindInference GHC.Tuple.())- data LiftMaybeSym1 (l :: TyFun a0123456789 b0123456789 -> *)- (l :: TyFun (Maybe a0123456789) (Maybe b0123456789))- = forall arg. Data.Singletons.KindOf (Apply (LiftMaybeSym1 l) arg) ~ Data.Singletons.KindOf (LiftMaybeSym2 l arg) =>- LiftMaybeSym1KindInference- type instance Apply (LiftMaybeSym1 l) l = LiftMaybeSym2 l l- instance SuppressUnusedWarnings LiftMaybeSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) LiftMaybeSym0KindInference GHC.Tuple.())- data LiftMaybeSym0 (l :: TyFun (TyFun a0123456789 b0123456789- -> *) (TyFun (Maybe a0123456789) (Maybe b0123456789) -> *))- = forall arg. Data.Singletons.KindOf (Apply LiftMaybeSym0 arg) ~ Data.Singletons.KindOf (LiftMaybeSym1 arg) =>- LiftMaybeSym0KindInference- type instance Apply LiftMaybeSym0 l = LiftMaybeSym1 l- type ZeroSym0 = Zero- type SuccSym1 (t :: NatT) = Succ t- instance SuppressUnusedWarnings SuccSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) SuccSym0KindInference GHC.Tuple.())- data SuccSym0 (l :: TyFun NatT NatT)- = forall arg. Data.Singletons.KindOf (Apply SuccSym0 arg) ~ Data.Singletons.KindOf (SuccSym1 arg) =>- SuccSym0KindInference- type instance Apply SuccSym0 l = SuccSym1 l- type (:+$$$) (t :: Nat) (t :: Nat) = (:+) t t- instance SuppressUnusedWarnings (:+$$) where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) (:+$$###) GHC.Tuple.())- data (:+$$) (l :: Nat) l- = forall arg. Data.Singletons.KindOf (Apply ((:+$$) l) arg) ~ Data.Singletons.KindOf ((:+$$$) l arg) =>- :+$$###- type instance Apply ((:+$$) l) l = (:+$$$) l l- instance SuppressUnusedWarnings (:+$) where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) (:+$###) GHC.Tuple.())- data (:+$) l- = forall arg. Data.Singletons.KindOf (Apply (:+$) arg) ~ Data.Singletons.KindOf ((:+$$) arg) =>- :+$###- type instance Apply (:+$) l = (:+$$) l
tests/compile-and-dump/Promote/GenDefunSymbols.hs view
@@ -6,10 +6,7 @@ import Data.Singletons.Promote import Data.Singletons.SuppressUnusedWarnings import GHC.TypeLits hiding (type (*))--#if __GLASGOW_HASKELL__ >= 711 import Data.Kind-#endif type family LiftMaybe (f :: TyFun a b -> *) (x :: Maybe a) :: Maybe b where LiftMaybe f Nothing = Nothing
− tests/compile-and-dump/Promote/Newtypes.ghc710.template
@@ -1,42 +0,0 @@-Promote/Newtypes.hs:(0,0)-(0,0): Splicing declarations- promote- [d| newtype Foo- = Foo Nat- deriving (Eq)- newtype Bar = Bar {unBar :: Nat} |]- ======>- newtype Foo- = Foo Nat- deriving (Eq)- newtype Bar = Bar {unBar :: Nat}- type UnBarSym1 (t :: Bar) = UnBar t- instance SuppressUnusedWarnings UnBarSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) UnBarSym0KindInference GHC.Tuple.())- data UnBarSym0 (l :: TyFun Bar Nat)- = forall arg. KindOf (Apply UnBarSym0 arg) ~ KindOf (UnBarSym1 arg) =>- UnBarSym0KindInference- type instance Apply UnBarSym0 l = UnBarSym1 l- type family UnBar (a :: Bar) :: Nat where- UnBar (Bar field) = field- type family Equals_0123456789 (a :: Foo) (b :: Foo) :: Bool where- Equals_0123456789 (Foo a) (Foo b) = (:==) a b- Equals_0123456789 (a :: Foo) (b :: Foo) = FalseSym0- instance PEq (KProxy :: KProxy Foo) where- type (:==) (a :: Foo) (b :: Foo) = Equals_0123456789 a b- type FooSym1 (t :: Nat) = Foo t- instance SuppressUnusedWarnings FooSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) FooSym0KindInference GHC.Tuple.())- data FooSym0 (l :: TyFun Nat Foo)- = forall arg. KindOf (Apply FooSym0 arg) ~ KindOf (FooSym1 arg) =>- FooSym0KindInference- type instance Apply FooSym0 l = FooSym1 l- type BarSym1 (t :: Nat) = Bar t- instance SuppressUnusedWarnings BarSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) BarSym0KindInference GHC.Tuple.())- data BarSym0 (l :: TyFun Nat Bar)- = forall arg. KindOf (Apply BarSym0 arg) ~ KindOf (BarSym1 arg) =>- BarSym0KindInference- type instance Apply BarSym0 l = BarSym1 l
tests/compile-and-dump/Promote/Newtypes.ghc80.template view
@@ -22,7 +22,7 @@ type family Equals_0123456789 (a :: Foo) (b :: Foo) :: Bool where Equals_0123456789 (Foo a) (Foo b) = (:==) a b Equals_0123456789 (a :: Foo) (b :: Foo) = FalseSym0- instance PEq (KProxy :: KProxy Foo) where+ instance PEq (Proxy :: Proxy Foo) where type (:==) (a :: Foo) (b :: Foo) = Equals_0123456789 a b type FooSym1 (t :: Nat) = Foo t instance SuppressUnusedWarnings FooSym0 where
− tests/compile-and-dump/Promote/Pragmas.ghc710.template
@@ -1,12 +0,0 @@-Promote/Pragmas.hs:(0,0)-(0,0): Splicing declarations- promote- [d| {-# INLINE foo #-}- foo :: Bool- foo = True |]- ======>- {-# INLINE foo #-}- foo :: Bool- foo = True- type FooSym0 = Foo- type family Foo :: Bool where- Foo = TrueSym0
− tests/compile-and-dump/Promote/Prelude.ghc710.template
@@ -1,17 +0,0 @@-Promote/Prelude.hs:(0,0)-(0,0): Splicing declarations- promoteOnly- [d| odd :: Nat -> Bool- odd 0 = False- odd n = not . odd $ n - 1 |]- ======>- type OddSym1 (t :: Nat) = Odd t- instance SuppressUnusedWarnings OddSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) OddSym0KindInference GHC.Tuple.())- data OddSym0 (l :: TyFun Nat Bool)- = forall arg. Data.Singletons.KindOf (Apply OddSym0 arg) ~ Data.Singletons.KindOf (OddSym1 arg) =>- OddSym0KindInference- type instance Apply OddSym0 l = OddSym1 l- type family Odd (a :: Nat) :: Bool where- Odd 0 = FalseSym0- Odd n = Apply (Apply ($$) (Apply (Apply (:.$) NotSym0) OddSym0)) (Apply (Apply (:-$) n) (FromInteger 1))
− tests/compile-and-dump/Singletons/AsPattern.ghc710.template
@@ -1,383 +0,0 @@-Singletons/AsPattern.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| maybePlus :: Maybe Nat -> Maybe Nat- maybePlus (Just n) = Just (plus (Succ Zero) n)- maybePlus p@Nothing = p- bar :: Maybe Nat -> Maybe Nat- bar x@(Just _) = x- bar Nothing = Nothing- baz_ :: Maybe Baz -> Maybe Baz- baz_ p@Nothing = p- baz_ p@(Just (Baz _ _ _)) = p- tup :: (Nat, Nat) -> (Nat, Nat)- tup p@(_, _) = p- foo :: [Nat] -> [Nat]- foo p@[] = p- foo p@[_] = p- foo p@(_ : _ : _) = p- - data Baz = Baz Nat Nat Nat |]- ======>- maybePlus :: Maybe Nat -> Maybe Nat- maybePlus (Just n) = Just (plus (Succ Zero) n)- maybePlus p@Nothing = p- bar :: Maybe Nat -> Maybe Nat- bar x@(Just _) = x- bar Nothing = Nothing- data Baz = Baz Nat Nat Nat- baz_ :: Maybe Baz -> Maybe Baz- baz_ p@Nothing = p- baz_ p@(Just (Baz _ _ _)) = p- tup :: (Nat, Nat) -> (Nat, Nat)- tup p@(_, _) = p- foo :: [Nat] -> [Nat]- foo p@GHC.Types.[] = p- foo p@[_] = p- foo p@(_ GHC.Types.: (_ GHC.Types.: _)) = p- type BazSym3 (t :: Nat) (t :: Nat) (t :: Nat) = Baz t t t- instance SuppressUnusedWarnings BazSym2 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) BazSym2KindInference GHC.Tuple.())- data BazSym2 (l :: Nat) (l :: Nat) (l :: TyFun Nat Baz)- = forall arg. KindOf (Apply (BazSym2 l l) arg) ~ KindOf (BazSym3 l l arg) =>- BazSym2KindInference- type instance Apply (BazSym2 l l) l = BazSym3 l l l- instance SuppressUnusedWarnings BazSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) BazSym1KindInference GHC.Tuple.())- data BazSym1 (l :: Nat) (l :: TyFun Nat (TyFun Nat Baz -> *))- = forall arg. KindOf (Apply (BazSym1 l) arg) ~ KindOf (BazSym2 l arg) =>- BazSym1KindInference- type instance Apply (BazSym1 l) l = BazSym2 l l- instance SuppressUnusedWarnings BazSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) BazSym0KindInference GHC.Tuple.())- data BazSym0 (l :: TyFun Nat (TyFun Nat (TyFun Nat Baz -> *) -> *))- = forall arg. KindOf (Apply BazSym0 arg) ~ KindOf (BazSym1 arg) =>- BazSym0KindInference- type instance Apply BazSym0 l = BazSym1 l- type Let0123456789PSym0 = Let0123456789P- type family Let0123456789P where- Let0123456789P = '[]- type Let0123456789PSym1 t = Let0123456789P t- instance SuppressUnusedWarnings Let0123456789PSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Let0123456789PSym0KindInference GHC.Tuple.())- data Let0123456789PSym0 l- = forall arg. KindOf (Apply Let0123456789PSym0 arg) ~ KindOf (Let0123456789PSym1 arg) =>- Let0123456789PSym0KindInference- type instance Apply Let0123456789PSym0 l = Let0123456789PSym1 l- type family Let0123456789P wild_0123456789 where- Let0123456789P wild_0123456789 = Apply (Apply (:$) wild_0123456789) '[]- type Let0123456789PSym3 t t t = Let0123456789P t t t- instance SuppressUnusedWarnings Let0123456789PSym2 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Let0123456789PSym2KindInference GHC.Tuple.())- data Let0123456789PSym2 l l l- = forall arg. KindOf (Apply (Let0123456789PSym2 l l) arg) ~ KindOf (Let0123456789PSym3 l l arg) =>- Let0123456789PSym2KindInference- type instance Apply (Let0123456789PSym2 l l) l = Let0123456789PSym3 l l l- instance SuppressUnusedWarnings Let0123456789PSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Let0123456789PSym1KindInference GHC.Tuple.())- data Let0123456789PSym1 l l- = forall arg. KindOf (Apply (Let0123456789PSym1 l) arg) ~ KindOf (Let0123456789PSym2 l arg) =>- Let0123456789PSym1KindInference- type instance Apply (Let0123456789PSym1 l) l = Let0123456789PSym2 l l- instance SuppressUnusedWarnings Let0123456789PSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Let0123456789PSym0KindInference GHC.Tuple.())- data Let0123456789PSym0 l- = forall arg. KindOf (Apply Let0123456789PSym0 arg) ~ KindOf (Let0123456789PSym1 arg) =>- Let0123456789PSym0KindInference- type instance Apply Let0123456789PSym0 l = Let0123456789PSym1 l- type family Let0123456789P wild_0123456789- wild_0123456789- wild_0123456789 where- Let0123456789P wild_0123456789 wild_0123456789 wild_0123456789 = Apply (Apply (:$) wild_0123456789) (Apply (Apply (:$) wild_0123456789) wild_0123456789)- type Let0123456789PSym2 t t = Let0123456789P t t- instance SuppressUnusedWarnings Let0123456789PSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Let0123456789PSym1KindInference GHC.Tuple.())- data Let0123456789PSym1 l l- = forall arg. KindOf (Apply (Let0123456789PSym1 l) arg) ~ KindOf (Let0123456789PSym2 l arg) =>- Let0123456789PSym1KindInference- type instance Apply (Let0123456789PSym1 l) l = Let0123456789PSym2 l l- instance SuppressUnusedWarnings Let0123456789PSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Let0123456789PSym0KindInference GHC.Tuple.())- data Let0123456789PSym0 l- = forall arg. KindOf (Apply Let0123456789PSym0 arg) ~ KindOf (Let0123456789PSym1 arg) =>- Let0123456789PSym0KindInference- type instance Apply Let0123456789PSym0 l = Let0123456789PSym1 l- type family Let0123456789P wild_0123456789 wild_0123456789 where- Let0123456789P wild_0123456789 wild_0123456789 = Apply (Apply Tuple2Sym0 wild_0123456789) wild_0123456789- type Let0123456789PSym0 = Let0123456789P- type family Let0123456789P where- Let0123456789P = NothingSym0- type Let0123456789PSym3 t t t = Let0123456789P t t t- instance SuppressUnusedWarnings Let0123456789PSym2 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Let0123456789PSym2KindInference GHC.Tuple.())- data Let0123456789PSym2 l l l- = forall arg. KindOf (Apply (Let0123456789PSym2 l l) arg) ~ KindOf (Let0123456789PSym3 l l arg) =>- Let0123456789PSym2KindInference- type instance Apply (Let0123456789PSym2 l l) l = Let0123456789PSym3 l l l- instance SuppressUnusedWarnings Let0123456789PSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Let0123456789PSym1KindInference GHC.Tuple.())- data Let0123456789PSym1 l l- = forall arg. KindOf (Apply (Let0123456789PSym1 l) arg) ~ KindOf (Let0123456789PSym2 l arg) =>- Let0123456789PSym1KindInference- type instance Apply (Let0123456789PSym1 l) l = Let0123456789PSym2 l l- instance SuppressUnusedWarnings Let0123456789PSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Let0123456789PSym0KindInference GHC.Tuple.())- data Let0123456789PSym0 l- = forall arg. KindOf (Apply Let0123456789PSym0 arg) ~ KindOf (Let0123456789PSym1 arg) =>- Let0123456789PSym0KindInference- type instance Apply Let0123456789PSym0 l = Let0123456789PSym1 l- type family Let0123456789P wild_0123456789- wild_0123456789- wild_0123456789 where- Let0123456789P wild_0123456789 wild_0123456789 wild_0123456789 = Apply JustSym0 (Apply (Apply (Apply BazSym0 wild_0123456789) wild_0123456789) wild_0123456789)- type Let0123456789XSym1 t = Let0123456789X t- instance SuppressUnusedWarnings Let0123456789XSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Let0123456789XSym0KindInference GHC.Tuple.())- data Let0123456789XSym0 l- = forall arg. KindOf (Apply Let0123456789XSym0 arg) ~ KindOf (Let0123456789XSym1 arg) =>- Let0123456789XSym0KindInference- type instance Apply Let0123456789XSym0 l = Let0123456789XSym1 l- type family Let0123456789X wild_0123456789 where- Let0123456789X wild_0123456789 = Apply JustSym0 wild_0123456789- type Let0123456789PSym0 = Let0123456789P- type family Let0123456789P where- Let0123456789P = NothingSym0- type FooSym1 (t :: [Nat]) = Foo t- instance SuppressUnusedWarnings FooSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) FooSym0KindInference GHC.Tuple.())- data FooSym0 (l :: TyFun [Nat] [Nat])- = forall arg. KindOf (Apply FooSym0 arg) ~ KindOf (FooSym1 arg) =>- FooSym0KindInference- type instance Apply FooSym0 l = FooSym1 l- type TupSym1 (t :: (Nat, Nat)) = Tup t- instance SuppressUnusedWarnings TupSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) TupSym0KindInference GHC.Tuple.())- data TupSym0 (l :: TyFun (Nat, Nat) (Nat, Nat))- = forall arg. KindOf (Apply TupSym0 arg) ~ KindOf (TupSym1 arg) =>- TupSym0KindInference- type instance Apply TupSym0 l = TupSym1 l- type Baz_Sym1 (t :: Maybe Baz) = Baz_ t- instance SuppressUnusedWarnings Baz_Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Baz_Sym0KindInference GHC.Tuple.())- data Baz_Sym0 (l :: TyFun (Maybe Baz) (Maybe Baz))- = forall arg. KindOf (Apply Baz_Sym0 arg) ~ KindOf (Baz_Sym1 arg) =>- Baz_Sym0KindInference- type instance Apply Baz_Sym0 l = Baz_Sym1 l- type BarSym1 (t :: Maybe Nat) = Bar t- instance SuppressUnusedWarnings BarSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) BarSym0KindInference GHC.Tuple.())- data BarSym0 (l :: TyFun (Maybe Nat) (Maybe Nat))- = forall arg. KindOf (Apply BarSym0 arg) ~ KindOf (BarSym1 arg) =>- BarSym0KindInference- type instance Apply BarSym0 l = BarSym1 l- type MaybePlusSym1 (t :: Maybe Nat) = MaybePlus t- instance SuppressUnusedWarnings MaybePlusSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) MaybePlusSym0KindInference GHC.Tuple.())- data MaybePlusSym0 (l :: TyFun (Maybe Nat) (Maybe Nat))- = forall arg. KindOf (Apply MaybePlusSym0 arg) ~ KindOf (MaybePlusSym1 arg) =>- MaybePlusSym0KindInference- type instance Apply MaybePlusSym0 l = MaybePlusSym1 l- type family Foo (a :: [Nat]) :: [Nat] where- Foo '[] = Let0123456789PSym0- Foo '[wild_0123456789] = Let0123456789PSym1 wild_0123456789- Foo ((:) wild_0123456789 ((:) wild_0123456789 wild_0123456789)) = Let0123456789PSym3 wild_0123456789 wild_0123456789 wild_0123456789- type family Tup (a :: (Nat, Nat)) :: (Nat, Nat) where- Tup '(wild_0123456789,- wild_0123456789) = Let0123456789PSym2 wild_0123456789 wild_0123456789- type family Baz_ (a :: Maybe Baz) :: Maybe Baz where- Baz_ Nothing = Let0123456789PSym0- Baz_ (Just (Baz wild_0123456789 wild_0123456789 wild_0123456789)) = Let0123456789PSym3 wild_0123456789 wild_0123456789 wild_0123456789- type family Bar (a :: Maybe Nat) :: Maybe Nat where- Bar (Just wild_0123456789) = Let0123456789XSym1 wild_0123456789- Bar Nothing = NothingSym0- type family MaybePlus (a :: Maybe Nat) :: Maybe Nat where- MaybePlus (Just n) = Apply JustSym0 (Apply (Apply PlusSym0 (Apply SuccSym0 ZeroSym0)) n)- MaybePlus Nothing = Let0123456789PSym0- sFoo ::- forall (t :: [Nat]). Sing t -> Sing (Apply FooSym0 t :: [Nat])- sTup ::- forall (t :: (Nat, Nat)).- Sing t -> Sing (Apply TupSym0 t :: (Nat, Nat))- sBaz_ ::- forall (t :: Maybe Baz).- Sing t -> Sing (Apply Baz_Sym0 t :: Maybe Baz)- sBar ::- forall (t :: Maybe Nat).- Sing t -> Sing (Apply BarSym0 t :: Maybe Nat)- sMaybePlus ::- forall (t :: Maybe Nat).- Sing t -> Sing (Apply MaybePlusSym0 t :: Maybe Nat)- sFoo SNil- = let- lambda :: t ~ '[] => Sing (Apply FooSym0 t :: [Nat])- lambda- = let- sP :: Sing Let0123456789PSym0- sP = SNil- in sP- in lambda- sFoo (SCons sWild_0123456789 SNil)- = let- lambda ::- forall wild_0123456789. t ~ Apply (Apply (:$) wild_0123456789) '[] =>- Sing wild_0123456789 -> Sing (Apply FooSym0 t :: [Nat])- lambda wild_0123456789- = let- sP :: Sing (Let0123456789PSym1 wild_0123456789)- sP- = applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) wild_0123456789)- SNil- in sP- in lambda sWild_0123456789- sFoo- (SCons sWild_0123456789 (SCons sWild_0123456789 sWild_0123456789))- = let- lambda ::- forall wild_0123456789- wild_0123456789- wild_0123456789. t ~ Apply (Apply (:$) wild_0123456789) (Apply (Apply (:$) wild_0123456789) wild_0123456789) =>- Sing wild_0123456789- -> Sing wild_0123456789- -> Sing wild_0123456789 -> Sing (Apply FooSym0 t :: [Nat])- lambda wild_0123456789 wild_0123456789 wild_0123456789- = let- sP ::- Sing (Let0123456789PSym3 wild_0123456789 wild_0123456789 wild_0123456789)- sP- = applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) wild_0123456789)- (applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) wild_0123456789)- wild_0123456789)- in sP- in lambda sWild_0123456789 sWild_0123456789 sWild_0123456789- sTup (STuple2 sWild_0123456789 sWild_0123456789)- = let- lambda ::- forall wild_0123456789- wild_0123456789. t ~ Apply (Apply Tuple2Sym0 wild_0123456789) wild_0123456789 =>- Sing wild_0123456789- -> Sing wild_0123456789 -> Sing (Apply TupSym0 t :: (Nat, Nat))- lambda wild_0123456789 wild_0123456789- = let- sP :: Sing (Let0123456789PSym2 wild_0123456789 wild_0123456789)- sP- = applySing- (applySing- (singFun2 (Proxy :: Proxy Tuple2Sym0) STuple2) wild_0123456789)- wild_0123456789- in sP- in lambda sWild_0123456789 sWild_0123456789- sBaz_ SNothing- = let- lambda :: t ~ NothingSym0 => Sing (Apply Baz_Sym0 t :: Maybe Baz)- lambda- = let- sP :: Sing Let0123456789PSym0- sP = SNothing- in sP- in lambda- sBaz_- (SJust (SBaz sWild_0123456789 sWild_0123456789 sWild_0123456789))- = let- lambda ::- forall wild_0123456789- wild_0123456789- wild_0123456789. t ~ Apply JustSym0 (Apply (Apply (Apply BazSym0 wild_0123456789) wild_0123456789) wild_0123456789) =>- Sing wild_0123456789- -> Sing wild_0123456789- -> Sing wild_0123456789 -> Sing (Apply Baz_Sym0 t :: Maybe Baz)- lambda wild_0123456789 wild_0123456789 wild_0123456789- = let- sP ::- Sing (Let0123456789PSym3 wild_0123456789 wild_0123456789 wild_0123456789)- sP- = applySing- (singFun1 (Proxy :: Proxy JustSym0) SJust)- (applySing- (applySing- (applySing- (singFun3 (Proxy :: Proxy BazSym0) SBaz) wild_0123456789)- wild_0123456789)- wild_0123456789)- in sP- in lambda sWild_0123456789 sWild_0123456789 sWild_0123456789- sBar (SJust sWild_0123456789)- = let- lambda ::- forall wild_0123456789. t ~ Apply JustSym0 wild_0123456789 =>- Sing wild_0123456789 -> Sing (Apply BarSym0 t :: Maybe Nat)- lambda wild_0123456789- = let- sX :: Sing (Let0123456789XSym1 wild_0123456789)- sX- = applySing- (singFun1 (Proxy :: Proxy JustSym0) SJust) wild_0123456789- in sX- in lambda sWild_0123456789- sBar SNothing- = let- lambda :: t ~ NothingSym0 => Sing (Apply BarSym0 t :: Maybe Nat)- lambda = SNothing- in lambda- sMaybePlus (SJust sN)- = let- lambda ::- forall n. t ~ Apply JustSym0 n =>- Sing n -> Sing (Apply MaybePlusSym0 t :: Maybe Nat)- lambda n- = applySing- (singFun1 (Proxy :: Proxy JustSym0) SJust)- (applySing- (applySing- (singFun2 (Proxy :: Proxy PlusSym0) sPlus)- (applySing (singFun1 (Proxy :: Proxy SuccSym0) SSucc) SZero))- n)- in lambda sN- sMaybePlus SNothing- = let- lambda ::- t ~ NothingSym0 => Sing (Apply MaybePlusSym0 t :: Maybe Nat)- lambda- = let- sP :: Sing Let0123456789PSym0- sP = SNothing- in sP- in lambda- data instance Sing (z :: Baz)- = forall (n :: Nat) (n :: Nat) (n :: Nat). z ~ Baz n n n =>- SBaz (Sing (n :: Nat)) (Sing (n :: Nat)) (Sing (n :: Nat))- type SBaz = (Sing :: Baz -> *)- instance SingKind (KProxy :: KProxy Baz) where- type DemoteRep (KProxy :: KProxy Baz) = Baz- fromSing (SBaz b b b) = Baz (fromSing b) (fromSing b) (fromSing b)- toSing (Baz b b b)- = case- GHC.Tuple.(,,)- (toSing b :: SomeSing (KProxy :: KProxy Nat))- (toSing b :: SomeSing (KProxy :: KProxy Nat))- (toSing b :: SomeSing (KProxy :: KProxy Nat))- of {- GHC.Tuple.(,,) (SomeSing c) (SomeSing c) (SomeSing c)- -> SomeSing (SBaz c c c) }- instance (SingI n, SingI n, SingI n) =>- SingI (Baz (n :: Nat) (n :: Nat) (n :: Nat)) where- sing = SBaz sing sing sing
tests/compile-and-dump/Singletons/AsPattern.ghc80.template view
@@ -370,15 +370,15 @@ = forall (n :: Nat) (n :: Nat) (n :: Nat). z ~ Baz n n n => SBaz (Sing (n :: Nat)) (Sing (n :: Nat)) (Sing (n :: Nat)) type SBaz = (Sing :: Baz -> GHC.Types.Type)- instance SingKind (KProxy :: KProxy Baz) where- type DemoteRep (KProxy :: KProxy Baz) = Baz+ instance SingKind Baz where+ type DemoteRep Baz = Baz fromSing (SBaz b b b) = Baz (fromSing b) (fromSing b) (fromSing b) toSing (Baz b b b) = case GHC.Tuple.(,,)- (toSing b :: SomeSing (KProxy :: KProxy Nat))- (toSing b :: SomeSing (KProxy :: KProxy Nat))- (toSing b :: SomeSing (KProxy :: KProxy Nat))+ (toSing b :: SomeSing Nat)+ (toSing b :: SomeSing Nat)+ (toSing b :: SomeSing Nat) of { GHC.Tuple.(,,) (SomeSing c) (SomeSing c) (SomeSing c) -> SomeSing (SBaz c c c) }
− tests/compile-and-dump/Singletons/BadBoundedDeriving.ghc710.template
@@ -1,3 +0,0 @@--Singletons/BadBoundedDeriving.hs:0:0:- Can't derive Bounded instance for Foo_0 a_1.
− tests/compile-and-dump/Singletons/BadEnumDeriving.ghc710.template
@@ -1,3 +0,0 @@--Singletons/BadEnumDeriving.hs:0:0:- Can't derive Enum instance for Foo_0 a_1.
− tests/compile-and-dump/Singletons/BoundedDeriving.ghc710.template
@@ -1,265 +0,0 @@-Singletons/BoundedDeriving.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| data Foo1- = Foo1- deriving (Bounded)- data Foo2- = A | B | C | D | E- deriving (Bounded)- data Foo3 a- = Foo3 a- deriving (Bounded)- data Foo4 (a :: *) (b :: *)- = Foo41 | Foo42- deriving (Bounded)- data Pair- = Pair Bool Bool- deriving (Bounded) |]- ======>- data Foo1- = Foo1- deriving (Bounded)- data Foo2- = A | B | C | D | E- deriving (Bounded)- data Foo3 a- = Foo3 a- deriving (Bounded)- data Foo4 (a :: *) (b :: *)- = Foo41 | Foo42- deriving (Bounded)- data Pair- = Pair Bool Bool- deriving (Bounded)- type Foo1Sym0 = Foo1- type ASym0 = A- type BSym0 = B- type CSym0 = C- type DSym0 = D- type ESym0 = E- type Foo3Sym1 (t :: a0123456789) = Foo3 t- instance SuppressUnusedWarnings Foo3Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo3Sym0KindInference GHC.Tuple.())- data Foo3Sym0 (l :: TyFun a0123456789 (Foo3 a0123456789))- = forall arg. KindOf (Apply Foo3Sym0 arg) ~ KindOf (Foo3Sym1 arg) =>- Foo3Sym0KindInference- type instance Apply Foo3Sym0 l = Foo3Sym1 l- type Foo41Sym0 = Foo41- type Foo42Sym0 = Foo42- type PairSym2 (t :: Bool) (t :: Bool) = Pair t t- instance SuppressUnusedWarnings PairSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) PairSym1KindInference GHC.Tuple.())- data PairSym1 (l :: Bool) (l :: TyFun Bool Pair)- = forall arg. KindOf (Apply (PairSym1 l) arg) ~ KindOf (PairSym2 l arg) =>- PairSym1KindInference- type instance Apply (PairSym1 l) l = PairSym2 l l- instance SuppressUnusedWarnings PairSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) PairSym0KindInference GHC.Tuple.())- data PairSym0 (l :: TyFun Bool (TyFun Bool Pair -> *))- = forall arg. KindOf (Apply PairSym0 arg) ~ KindOf (PairSym1 arg) =>- PairSym0KindInference- type instance Apply PairSym0 l = PairSym1 l- type family MinBound_0123456789 :: Foo1 where- MinBound_0123456789 = Foo1Sym0- type MinBound_0123456789Sym0 = MinBound_0123456789- type family MaxBound_0123456789 :: Foo1 where- MaxBound_0123456789 = Foo1Sym0- type MaxBound_0123456789Sym0 = MaxBound_0123456789- instance PBounded (KProxy :: KProxy Foo1) where- type MinBound = MinBound_0123456789Sym0- type MaxBound = MaxBound_0123456789Sym0- type family MinBound_0123456789 :: Foo2 where- MinBound_0123456789 = ASym0- type MinBound_0123456789Sym0 = MinBound_0123456789- type family MaxBound_0123456789 :: Foo2 where- MaxBound_0123456789 = ESym0- type MaxBound_0123456789Sym0 = MaxBound_0123456789- instance PBounded (KProxy :: KProxy Foo2) where- type MinBound = MinBound_0123456789Sym0- type MaxBound = MaxBound_0123456789Sym0- type family MinBound_0123456789 :: Foo3 a where- MinBound_0123456789 = Apply Foo3Sym0 MinBoundSym0- type MinBound_0123456789Sym0 = MinBound_0123456789- type family MaxBound_0123456789 :: Foo3 a where- MaxBound_0123456789 = Apply Foo3Sym0 MaxBoundSym0- type MaxBound_0123456789Sym0 = MaxBound_0123456789- instance PBounded (KProxy :: KProxy (Foo3 a)) where- type MinBound = MinBound_0123456789Sym0- type MaxBound = MaxBound_0123456789Sym0- type family MinBound_0123456789 :: Foo4 a b where- MinBound_0123456789 = Foo41Sym0- type MinBound_0123456789Sym0 = MinBound_0123456789- type family MaxBound_0123456789 :: Foo4 a b where- MaxBound_0123456789 = Foo42Sym0- type MaxBound_0123456789Sym0 = MaxBound_0123456789- instance PBounded (KProxy :: KProxy (Foo4 a b)) where- type MinBound = MinBound_0123456789Sym0- type MaxBound = MaxBound_0123456789Sym0- type family MinBound_0123456789 :: Pair where- MinBound_0123456789 = Apply (Apply PairSym0 MinBoundSym0) MinBoundSym0- type MinBound_0123456789Sym0 = MinBound_0123456789- type family MaxBound_0123456789 :: Pair where- MaxBound_0123456789 = Apply (Apply PairSym0 MaxBoundSym0) MaxBoundSym0- type MaxBound_0123456789Sym0 = MaxBound_0123456789- instance PBounded (KProxy :: KProxy Pair) where- type MinBound = MinBound_0123456789Sym0- type MaxBound = MaxBound_0123456789Sym0- data instance Sing (z :: Foo1) = z ~ Foo1 => SFoo1- type SFoo1 = (Sing :: Foo1 -> *)- instance SingKind (KProxy :: KProxy Foo1) where- type DemoteRep (KProxy :: KProxy Foo1) = Foo1- fromSing SFoo1 = Foo1- toSing Foo1 = SomeSing SFoo1- data instance Sing (z :: Foo2)- = z ~ A => SA |- z ~ B => SB |- z ~ C => SC |- z ~ D => SD |- z ~ E => SE- type SFoo2 = (Sing :: Foo2 -> *)- instance SingKind (KProxy :: KProxy Foo2) where- type DemoteRep (KProxy :: KProxy Foo2) = Foo2- fromSing SA = A- fromSing SB = B- fromSing SC = C- fromSing SD = D- fromSing SE = E- toSing A = SomeSing SA- toSing B = SomeSing SB- toSing C = SomeSing SC- toSing D = SomeSing SD- toSing E = SomeSing SE- data instance Sing (z :: Foo3 a)- = forall (n :: a). z ~ Foo3 n => SFoo3 (Sing (n :: a))- type SFoo3 = (Sing :: Foo3 a -> *)- instance SingKind (KProxy :: KProxy a) =>- SingKind (KProxy :: KProxy (Foo3 a)) where- type DemoteRep (KProxy :: KProxy (Foo3 a)) = Foo3 (DemoteRep (KProxy :: KProxy a))- fromSing (SFoo3 b) = Foo3 (fromSing b)- toSing (Foo3 b)- = case toSing b :: SomeSing (KProxy :: KProxy a) of {- SomeSing c -> SomeSing (SFoo3 c) }- data instance Sing (z :: Foo4 a b)- = z ~ Foo41 => SFoo41 | z ~ Foo42 => SFoo42- type SFoo4 = (Sing :: Foo4 a b -> *)- instance (SingKind (KProxy :: KProxy a),- SingKind (KProxy :: KProxy b)) =>- SingKind (KProxy :: KProxy (Foo4 a b)) where- type DemoteRep (KProxy :: KProxy (Foo4 a b)) = Foo4 (DemoteRep (KProxy :: KProxy a)) (DemoteRep (KProxy :: KProxy b))- fromSing SFoo41 = Foo41- fromSing SFoo42 = Foo42- toSing Foo41 = SomeSing SFoo41- toSing Foo42 = SomeSing SFoo42- data instance Sing (z :: Pair)- = forall (n :: Bool) (n :: Bool). z ~ Pair n n =>- SPair (Sing (n :: Bool)) (Sing (n :: Bool))- type SPair = (Sing :: Pair -> *)- instance SingKind (KProxy :: KProxy Pair) where- type DemoteRep (KProxy :: KProxy Pair) = Pair- fromSing (SPair b b) = Pair (fromSing b) (fromSing b)- toSing (Pair b b)- = case- GHC.Tuple.(,)- (toSing b :: SomeSing (KProxy :: KProxy Bool))- (toSing b :: SomeSing (KProxy :: KProxy Bool))- of {- GHC.Tuple.(,) (SomeSing c) (SomeSing c) -> SomeSing (SPair c c) }- instance SBounded (KProxy :: KProxy Foo1) where- sMinBound :: Sing (MinBoundSym0 :: Foo1)- sMaxBound :: Sing (MaxBoundSym0 :: Foo1)- sMinBound- = let- lambda :: Sing (MinBoundSym0 :: Foo1)- lambda = SFoo1- in lambda- sMaxBound- = let- lambda :: Sing (MaxBoundSym0 :: Foo1)- lambda = SFoo1- in lambda- instance SBounded (KProxy :: KProxy Foo2) where- sMinBound :: Sing (MinBoundSym0 :: Foo2)- sMaxBound :: Sing (MaxBoundSym0 :: Foo2)- sMinBound- = let- lambda :: Sing (MinBoundSym0 :: Foo2)- lambda = SA- in lambda- sMaxBound- = let- lambda :: Sing (MaxBoundSym0 :: Foo2)- lambda = SE- in lambda- instance SBounded (KProxy :: KProxy a) =>- SBounded (KProxy :: KProxy (Foo3 a)) where- sMinBound :: Sing (MinBoundSym0 :: Foo3 a)- sMaxBound :: Sing (MaxBoundSym0 :: Foo3 a)- sMinBound- = let- lambda :: Sing (MinBoundSym0 :: Foo3 a)- lambda- = applySing (singFun1 (Proxy :: Proxy Foo3Sym0) SFoo3) sMinBound- in lambda- sMaxBound- = let- lambda :: Sing (MaxBoundSym0 :: Foo3 a)- lambda- = applySing (singFun1 (Proxy :: Proxy Foo3Sym0) SFoo3) sMaxBound- in lambda- instance SBounded (KProxy :: KProxy (Foo4 a b)) where- sMinBound :: Sing (MinBoundSym0 :: Foo4 a b)- sMaxBound :: Sing (MaxBoundSym0 :: Foo4 a b)- sMinBound- = let- lambda :: Sing (MinBoundSym0 :: Foo4 a b)- lambda = SFoo41- in lambda- sMaxBound- = let- lambda :: Sing (MaxBoundSym0 :: Foo4 a b)- lambda = SFoo42- in lambda- instance SBounded (KProxy :: KProxy Bool) =>- SBounded (KProxy :: KProxy Pair) where- sMinBound :: Sing (MinBoundSym0 :: Pair)- sMaxBound :: Sing (MaxBoundSym0 :: Pair)- sMinBound- = let- lambda :: Sing (MinBoundSym0 :: Pair)- lambda- = applySing- (applySing (singFun2 (Proxy :: Proxy PairSym0) SPair) sMinBound)- sMinBound- in lambda- sMaxBound- = let- lambda :: Sing (MaxBoundSym0 :: Pair)- lambda- = applySing- (applySing (singFun2 (Proxy :: Proxy PairSym0) SPair) sMaxBound)- sMaxBound- in lambda- instance SingI Foo1 where- sing = SFoo1- instance SingI A where- sing = SA- instance SingI B where- sing = SB- instance SingI C where- sing = SC- instance SingI D where- sing = SD- instance SingI E where- sing = SE- instance SingI n => SingI (Foo3 (n :: a)) where- sing = SFoo3 sing- instance SingI Foo41 where- sing = SFoo41- instance SingI Foo42 where- sing = SFoo42- instance (SingI n, SingI n) =>- SingI (Pair (n :: Bool) (n :: Bool)) where- sing = SPair sing sing
tests/compile-and-dump/Singletons/BoundedDeriving.ghc80.template view
@@ -68,7 +68,7 @@ type family MaxBound_0123456789 :: Foo1 where MaxBound_0123456789 = Foo1Sym0 type MaxBound_0123456789Sym0 = MaxBound_0123456789- instance PBounded (KProxy :: KProxy Foo1) where+ instance PBounded (Proxy :: Proxy Foo1) where type MinBound = MinBound_0123456789Sym0 type MaxBound = MaxBound_0123456789Sym0 type family MinBound_0123456789 :: Foo2 where@@ -77,7 +77,7 @@ type family MaxBound_0123456789 :: Foo2 where MaxBound_0123456789 = ESym0 type MaxBound_0123456789Sym0 = MaxBound_0123456789- instance PBounded (KProxy :: KProxy Foo2) where+ instance PBounded (Proxy :: Proxy Foo2) where type MinBound = MinBound_0123456789Sym0 type MaxBound = MaxBound_0123456789Sym0 type family MinBound_0123456789 :: Foo3 a where@@ -86,7 +86,7 @@ type family MaxBound_0123456789 :: Foo3 a where MaxBound_0123456789 = Apply Foo3Sym0 MaxBoundSym0 type MaxBound_0123456789Sym0 = MaxBound_0123456789- instance PBounded (KProxy :: KProxy (Foo3 a)) where+ instance PBounded (Proxy :: Proxy (Foo3 a)) where type MinBound = MinBound_0123456789Sym0 type MaxBound = MaxBound_0123456789Sym0 type family MinBound_0123456789 :: Foo4 a b where@@ -95,7 +95,7 @@ type family MaxBound_0123456789 :: Foo4 a b where MaxBound_0123456789 = Foo42Sym0 type MaxBound_0123456789Sym0 = MaxBound_0123456789- instance PBounded (KProxy :: KProxy (Foo4 a b)) where+ instance PBounded (Proxy :: Proxy (Foo4 a b)) where type MinBound = MinBound_0123456789Sym0 type MaxBound = MaxBound_0123456789Sym0 type family MinBound_0123456789 :: Pair where@@ -104,13 +104,13 @@ type family MaxBound_0123456789 :: Pair where MaxBound_0123456789 = Apply (Apply PairSym0 MaxBoundSym0) MaxBoundSym0 type MaxBound_0123456789Sym0 = MaxBound_0123456789- instance PBounded (KProxy :: KProxy Pair) where+ instance PBounded (Proxy :: Proxy Pair) where type MinBound = MinBound_0123456789Sym0 type MaxBound = MaxBound_0123456789Sym0 data instance Sing (z :: Foo1) = z ~ Foo1 => SFoo1 type SFoo1 = (Sing :: Foo1 -> Type)- instance SingKind (KProxy :: KProxy Foo1) where- type DemoteRep (KProxy :: KProxy Foo1) = Foo1+ instance SingKind Foo1 where+ type DemoteRep Foo1 = Foo1 fromSing SFoo1 = Foo1 toSing Foo1 = SomeSing SFoo1 data instance Sing (z :: Foo2)@@ -120,8 +120,8 @@ z ~ D => SD | z ~ E => SE type SFoo2 = (Sing :: Foo2 -> Type)- instance SingKind (KProxy :: KProxy Foo2) where- type DemoteRep (KProxy :: KProxy Foo2) = Foo2+ instance SingKind Foo2 where+ type DemoteRep Foo2 = Foo2 fromSing SA = A fromSing SB = B fromSing SC = C@@ -135,20 +135,17 @@ data instance Sing (z :: Foo3 a) = forall (n :: a). z ~ Foo3 n => SFoo3 (Sing (n :: a)) type SFoo3 = (Sing :: Foo3 a -> Type)- instance SingKind (KProxy :: KProxy a) =>- SingKind (KProxy :: KProxy (Foo3 a)) where- type DemoteRep (KProxy :: KProxy (Foo3 a)) = Foo3 (DemoteRep (KProxy :: KProxy a))+ instance SingKind a => SingKind (Foo3 a) where+ type DemoteRep (Foo3 a) = Foo3 (DemoteRep a) fromSing (SFoo3 b) = Foo3 (fromSing b) toSing (Foo3 b)- = case toSing b :: SomeSing (KProxy :: KProxy a) of {+ = case toSing b :: SomeSing a of { SomeSing c -> SomeSing (SFoo3 c) } data instance Sing (z :: Foo4 a b) = z ~ Foo41 => SFoo41 | z ~ Foo42 => SFoo42 type SFoo4 = (Sing :: Foo4 a b -> Type)- instance (SingKind (KProxy :: KProxy a),- SingKind (KProxy :: KProxy b)) =>- SingKind (KProxy :: KProxy (Foo4 a b)) where- type DemoteRep (KProxy :: KProxy (Foo4 a b)) = Foo4 (DemoteRep (KProxy :: KProxy a)) (DemoteRep (KProxy :: KProxy b))+ instance (SingKind a, SingKind b) => SingKind (Foo4 a b) where+ type DemoteRep (Foo4 a b) = Foo4 (DemoteRep a) (DemoteRep b) fromSing SFoo41 = Foo41 fromSing SFoo42 = Foo42 toSing Foo41 = SomeSing SFoo41@@ -157,17 +154,16 @@ = forall (n :: Bool) (n :: Bool). z ~ Pair n n => SPair (Sing (n :: Bool)) (Sing (n :: Bool)) type SPair = (Sing :: Pair -> Type)- instance SingKind (KProxy :: KProxy Pair) where- type DemoteRep (KProxy :: KProxy Pair) = Pair+ instance SingKind Pair where+ type DemoteRep Pair = Pair fromSing (SPair b b) = Pair (fromSing b) (fromSing b) toSing (Pair b b) = case GHC.Tuple.(,)- (toSing b :: SomeSing (KProxy :: KProxy Bool))- (toSing b :: SomeSing (KProxy :: KProxy Bool))+ (toSing b :: SomeSing Bool) (toSing b :: SomeSing Bool) of { GHC.Tuple.(,) (SomeSing c) (SomeSing c) -> SomeSing (SPair c c) }- instance SBounded (KProxy :: KProxy Foo1) where+ instance SBounded Foo1 where sMinBound :: Sing (MinBoundSym0 :: Foo1) sMaxBound :: Sing (MaxBoundSym0 :: Foo1) sMinBound@@ -180,7 +176,7 @@ lambda :: Sing (MaxBoundSym0 :: Foo1) lambda = SFoo1 in lambda- instance SBounded (KProxy :: KProxy Foo2) where+ instance SBounded Foo2 where sMinBound :: Sing (MinBoundSym0 :: Foo2) sMaxBound :: Sing (MaxBoundSym0 :: Foo2) sMinBound@@ -193,8 +189,7 @@ lambda :: Sing (MaxBoundSym0 :: Foo2) lambda = SE in lambda- instance SBounded (KProxy :: KProxy a) =>- SBounded (KProxy :: KProxy (Foo3 a)) where+ instance SBounded a => SBounded (Foo3 a) where sMinBound :: Sing (MinBoundSym0 :: Foo3 a) sMaxBound :: Sing (MaxBoundSym0 :: Foo3 a) sMinBound@@ -209,7 +204,7 @@ lambda = applySing (singFun1 (Proxy :: Proxy Foo3Sym0) SFoo3) sMaxBound in lambda- instance SBounded (KProxy :: KProxy (Foo4 a b)) where+ instance SBounded (Foo4 a b) where sMinBound :: Sing (MinBoundSym0 :: Foo4 a b) sMaxBound :: Sing (MaxBoundSym0 :: Foo4 a b) sMinBound@@ -222,8 +217,7 @@ lambda :: Sing (MaxBoundSym0 :: Foo4 a b) lambda = SFoo42 in lambda- instance SBounded (KProxy :: KProxy Bool) =>- SBounded (KProxy :: KProxy Pair) where+ instance SBounded Bool => SBounded Pair where sMinBound :: Sing (MinBoundSym0 :: Pair) sMaxBound :: Sing (MaxBoundSym0 :: Pair) sMinBound
tests/compile-and-dump/Singletons/BoundedDeriving.hs view
@@ -2,10 +2,7 @@ import Data.Singletons.Prelude import Data.Singletons.TH--#if __GLASGOW_HASKELL__ >= 711 import Data.Kind-#endif $(singletons [d| data Foo1 = Foo1 deriving (Bounded)
− tests/compile-and-dump/Singletons/BoxUnBox.ghc710.template
@@ -1,49 +0,0 @@-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 :: forall a. Box a -> a- unBox (FBox a) = a- type FBoxSym1 (t :: a0123456789) = FBox t- instance SuppressUnusedWarnings FBoxSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) FBoxSym0KindInference GHC.Tuple.())- data FBoxSym0 (l :: TyFun a0123456789 (Box a0123456789))- = forall arg. KindOf (Apply FBoxSym0 arg) ~ KindOf (FBoxSym1 arg) =>- FBoxSym0KindInference- type instance Apply FBoxSym0 l = FBoxSym1 l- type UnBoxSym1 (t :: Box a0123456789) = UnBox t- instance SuppressUnusedWarnings UnBoxSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) UnBoxSym0KindInference GHC.Tuple.())- data UnBoxSym0 (l :: TyFun (Box a0123456789) a0123456789)- = forall arg. KindOf (Apply UnBoxSym0 arg) ~ KindOf (UnBoxSym1 arg) =>- UnBoxSym0KindInference- type instance Apply UnBoxSym0 l = UnBoxSym1 l- type family UnBox (a :: Box a) :: a where- UnBox (FBox a) = a- sUnBox ::- forall (t :: Box a). Sing t -> Sing (Apply UnBoxSym0 t :: a)- sUnBox (SFBox sA)- = let- lambda ::- forall a. t ~ Apply FBoxSym0 a =>- Sing a -> Sing (Apply UnBoxSym0 t :: a)- lambda a = a- in lambda sA- data instance Sing (z :: Box a)- = forall (n :: a). z ~ FBox n => SFBox (Sing (n :: a))- type SBox = (Sing :: Box a -> *)- instance SingKind (KProxy :: KProxy a) =>- SingKind (KProxy :: KProxy (Box a)) where- type DemoteRep (KProxy :: KProxy (Box a)) = Box (DemoteRep (KProxy :: KProxy a))- fromSing (SFBox b) = FBox (fromSing b)- toSing (FBox b)- = case toSing b :: SomeSing (KProxy :: KProxy a) of {- SomeSing c -> SomeSing (SFBox c) }- instance SingI n => SingI (FBox (n :: a)) where- sing = SFBox sing
tests/compile-and-dump/Singletons/BoxUnBox.ghc80.template view
@@ -38,12 +38,11 @@ data instance Sing (z :: Box a) = forall (n :: a). z ~ FBox n => SFBox (Sing (n :: a)) type SBox = (Sing :: Box a -> GHC.Types.Type)- instance SingKind (KProxy :: KProxy a) =>- SingKind (KProxy :: KProxy (Box a)) where- type DemoteRep (KProxy :: KProxy (Box a)) = Box (DemoteRep (KProxy :: KProxy a))+ instance SingKind a => SingKind (Box a) where+ type DemoteRep (Box a) = Box (DemoteRep a) fromSing (SFBox b) = FBox (fromSing b) toSing (FBox b)- = case toSing b :: SomeSing (KProxy :: KProxy a) of {+ = case toSing b :: SomeSing a of { SomeSing c -> SomeSing (SFBox c) } instance SingI n => SingI (FBox (n :: a)) where sing = SFBox sing
− tests/compile-and-dump/Singletons/CaseExpressions.ghc710.template
@@ -1,352 +0,0 @@-Singletons/CaseExpressions.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| foo1 :: a -> Maybe a -> a- foo1 d x- = case x of {- Just y -> y- Nothing -> d }- foo2 :: a -> Maybe a -> a- foo2 d _ = case (Just d) of { Just y -> y }- foo3 :: a -> b -> a- foo3 a b = case (a, b) of { (p, _) -> p }- foo4 :: forall a. a -> a- foo4 x- = case x of {- y -> let- z :: a- z = y- in z }- foo5 :: a -> a- foo5 x = case x of { y -> (\ _ -> x) y } |]- ======>- foo1 :: forall a. a -> Maybe a -> a- foo1 d x- = case x of {- Just y -> y- Nothing -> d }- foo2 :: forall a. a -> Maybe a -> a- foo2 d _ = case Just d of { Just y -> y }- foo3 :: forall a b. a -> b -> a- foo3 a b = case (a, b) of { (p, _) -> p }- foo4 :: forall a. a -> a- foo4 x- = case x of {- y -> let- z :: a- z = y- in z }- foo5 :: forall a. a -> a- foo5 x = case x of { y -> \ _ -> x y }- type family Case_0123456789 x y arg_0123456789 t where- Case_0123456789 x y arg_0123456789 _z_0123456789 = x- type family Lambda_0123456789 x y t where- Lambda_0123456789 x y arg_0123456789 = Case_0123456789 x y arg_0123456789 arg_0123456789- type Lambda_0123456789Sym3 t t t = Lambda_0123456789 t t t- instance SuppressUnusedWarnings Lambda_0123456789Sym2 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym2KindInference GHC.Tuple.())- data Lambda_0123456789Sym2 l l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym2 l l) arg) ~ KindOf (Lambda_0123456789Sym3 l l arg) =>- Lambda_0123456789Sym2KindInference- type instance Apply (Lambda_0123456789Sym2 l l) l = Lambda_0123456789Sym3 l l l- instance SuppressUnusedWarnings Lambda_0123456789Sym1 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym1KindInference GHC.Tuple.())- data Lambda_0123456789Sym1 l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym1 l) arg) ~ KindOf (Lambda_0123456789Sym2 l arg) =>- Lambda_0123456789Sym1KindInference- type instance Apply (Lambda_0123456789Sym1 l) l = Lambda_0123456789Sym2 l l- instance SuppressUnusedWarnings Lambda_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym0KindInference GHC.Tuple.())- data Lambda_0123456789Sym0 l- = forall arg. KindOf (Apply Lambda_0123456789Sym0 arg) ~ KindOf (Lambda_0123456789Sym1 arg) =>- Lambda_0123456789Sym0KindInference- type instance Apply Lambda_0123456789Sym0 l = Lambda_0123456789Sym1 l- type family Case_0123456789 x t where- Case_0123456789 x y = Apply (Apply (Apply Lambda_0123456789Sym0 x) y) y- type Let0123456789ZSym2 t t = Let0123456789Z t t- instance SuppressUnusedWarnings Let0123456789ZSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Let0123456789ZSym1KindInference GHC.Tuple.())- data Let0123456789ZSym1 l l- = forall arg. KindOf (Apply (Let0123456789ZSym1 l) arg) ~ KindOf (Let0123456789ZSym2 l arg) =>- Let0123456789ZSym1KindInference- type instance Apply (Let0123456789ZSym1 l) l = Let0123456789ZSym2 l l- instance SuppressUnusedWarnings Let0123456789ZSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Let0123456789ZSym0KindInference GHC.Tuple.())- data Let0123456789ZSym0 l- = forall arg. KindOf (Apply Let0123456789ZSym0 arg) ~ KindOf (Let0123456789ZSym1 arg) =>- Let0123456789ZSym0KindInference- type instance Apply Let0123456789ZSym0 l = Let0123456789ZSym1 l- type family Let0123456789Z x y :: a where- Let0123456789Z x y = y- type family Case_0123456789 x t where- Case_0123456789 x y = Let0123456789ZSym2 x y- type Let0123456789Scrutinee_0123456789Sym2 t t =- Let0123456789Scrutinee_0123456789 t t- instance SuppressUnusedWarnings Let0123456789Scrutinee_0123456789Sym1 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,)- Let0123456789Scrutinee_0123456789Sym1KindInference GHC.Tuple.())- data Let0123456789Scrutinee_0123456789Sym1 l l- = forall arg. KindOf (Apply (Let0123456789Scrutinee_0123456789Sym1 l) arg) ~ KindOf (Let0123456789Scrutinee_0123456789Sym2 l arg) =>- Let0123456789Scrutinee_0123456789Sym1KindInference- type instance Apply (Let0123456789Scrutinee_0123456789Sym1 l) l = Let0123456789Scrutinee_0123456789Sym2 l l- instance SuppressUnusedWarnings Let0123456789Scrutinee_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,)- Let0123456789Scrutinee_0123456789Sym0KindInference GHC.Tuple.())- data Let0123456789Scrutinee_0123456789Sym0 l- = forall arg. KindOf (Apply Let0123456789Scrutinee_0123456789Sym0 arg) ~ KindOf (Let0123456789Scrutinee_0123456789Sym1 arg) =>- Let0123456789Scrutinee_0123456789Sym0KindInference- type instance Apply Let0123456789Scrutinee_0123456789Sym0 l = Let0123456789Scrutinee_0123456789Sym1 l- type family Let0123456789Scrutinee_0123456789 a b where- Let0123456789Scrutinee_0123456789 a b = Apply (Apply Tuple2Sym0 a) b- type family Case_0123456789 a b t where- Case_0123456789 a b '(p, _z_0123456789) = p- type Let0123456789Scrutinee_0123456789Sym2 t t =- Let0123456789Scrutinee_0123456789 t t- instance SuppressUnusedWarnings Let0123456789Scrutinee_0123456789Sym1 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,)- Let0123456789Scrutinee_0123456789Sym1KindInference GHC.Tuple.())- data Let0123456789Scrutinee_0123456789Sym1 l l- = forall arg. KindOf (Apply (Let0123456789Scrutinee_0123456789Sym1 l) arg) ~ KindOf (Let0123456789Scrutinee_0123456789Sym2 l arg) =>- Let0123456789Scrutinee_0123456789Sym1KindInference- type instance Apply (Let0123456789Scrutinee_0123456789Sym1 l) l = Let0123456789Scrutinee_0123456789Sym2 l l- instance SuppressUnusedWarnings Let0123456789Scrutinee_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,)- Let0123456789Scrutinee_0123456789Sym0KindInference GHC.Tuple.())- data Let0123456789Scrutinee_0123456789Sym0 l- = forall arg. KindOf (Apply Let0123456789Scrutinee_0123456789Sym0 arg) ~ KindOf (Let0123456789Scrutinee_0123456789Sym1 arg) =>- Let0123456789Scrutinee_0123456789Sym0KindInference- type instance Apply Let0123456789Scrutinee_0123456789Sym0 l = Let0123456789Scrutinee_0123456789Sym1 l- type family Let0123456789Scrutinee_0123456789 d _z_0123456789 where- Let0123456789Scrutinee_0123456789 d _z_0123456789 = Apply JustSym0 d- type family Case_0123456789 d _z_0123456789 t where- Case_0123456789 d _z_0123456789 (Just y) = y- type family Case_0123456789 d x t where- Case_0123456789 d x (Just y) = y- Case_0123456789 d x Nothing = d- type Foo5Sym1 (t :: a0123456789) = Foo5 t- instance SuppressUnusedWarnings Foo5Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo5Sym0KindInference GHC.Tuple.())- data Foo5Sym0 (l :: TyFun a0123456789 a0123456789)- = forall arg. KindOf (Apply Foo5Sym0 arg) ~ KindOf (Foo5Sym1 arg) =>- Foo5Sym0KindInference- type instance Apply Foo5Sym0 l = Foo5Sym1 l- type Foo4Sym1 (t :: a0123456789) = Foo4 t- instance SuppressUnusedWarnings Foo4Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo4Sym0KindInference GHC.Tuple.())- data Foo4Sym0 (l :: TyFun a0123456789 a0123456789)- = forall arg. KindOf (Apply Foo4Sym0 arg) ~ KindOf (Foo4Sym1 arg) =>- Foo4Sym0KindInference- type instance Apply Foo4Sym0 l = Foo4Sym1 l- type Foo3Sym2 (t :: a0123456789) (t :: b0123456789) = Foo3 t t- instance SuppressUnusedWarnings Foo3Sym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo3Sym1KindInference GHC.Tuple.())- data Foo3Sym1 (l :: a0123456789)- (l :: TyFun b0123456789 a0123456789)- = forall arg. KindOf (Apply (Foo3Sym1 l) arg) ~ KindOf (Foo3Sym2 l arg) =>- Foo3Sym1KindInference- type instance Apply (Foo3Sym1 l) l = Foo3Sym2 l l- instance SuppressUnusedWarnings Foo3Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo3Sym0KindInference GHC.Tuple.())- data Foo3Sym0 (l :: TyFun a0123456789 (TyFun b0123456789 a0123456789- -> *))- = forall arg. KindOf (Apply Foo3Sym0 arg) ~ KindOf (Foo3Sym1 arg) =>- Foo3Sym0KindInference- type instance Apply Foo3Sym0 l = Foo3Sym1 l- type Foo2Sym2 (t :: a0123456789) (t :: Maybe a0123456789) =- Foo2 t t- instance SuppressUnusedWarnings Foo2Sym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo2Sym1KindInference GHC.Tuple.())- data Foo2Sym1 (l :: a0123456789)- (l :: TyFun (Maybe a0123456789) a0123456789)- = forall arg. KindOf (Apply (Foo2Sym1 l) arg) ~ KindOf (Foo2Sym2 l arg) =>- Foo2Sym1KindInference- type instance Apply (Foo2Sym1 l) l = Foo2Sym2 l l- instance SuppressUnusedWarnings Foo2Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo2Sym0KindInference GHC.Tuple.())- data Foo2Sym0 (l :: TyFun a0123456789 (TyFun (Maybe a0123456789) a0123456789- -> *))- = forall arg. KindOf (Apply Foo2Sym0 arg) ~ KindOf (Foo2Sym1 arg) =>- Foo2Sym0KindInference- type instance Apply Foo2Sym0 l = Foo2Sym1 l- type Foo1Sym2 (t :: a0123456789) (t :: Maybe a0123456789) =- Foo1 t t- instance SuppressUnusedWarnings Foo1Sym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo1Sym1KindInference GHC.Tuple.())- data Foo1Sym1 (l :: a0123456789)- (l :: TyFun (Maybe a0123456789) a0123456789)- = forall arg. KindOf (Apply (Foo1Sym1 l) arg) ~ KindOf (Foo1Sym2 l arg) =>- Foo1Sym1KindInference- type instance Apply (Foo1Sym1 l) l = Foo1Sym2 l l- instance SuppressUnusedWarnings Foo1Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo1Sym0KindInference GHC.Tuple.())- data Foo1Sym0 (l :: TyFun a0123456789 (TyFun (Maybe a0123456789) a0123456789- -> *))- = forall arg. KindOf (Apply Foo1Sym0 arg) ~ KindOf (Foo1Sym1 arg) =>- Foo1Sym0KindInference- type instance Apply Foo1Sym0 l = Foo1Sym1 l- type family Foo5 (a :: a) :: a where- Foo5 x = Case_0123456789 x x- type family Foo4 (a :: a) :: a where- Foo4 x = Case_0123456789 x x- type family Foo3 (a :: a) (a :: b) :: a where- Foo3 a b = Case_0123456789 a b (Let0123456789Scrutinee_0123456789Sym2 a b)- type family Foo2 (a :: a) (a :: Maybe a) :: a where- Foo2 d _z_0123456789 = Case_0123456789 d _z_0123456789 (Let0123456789Scrutinee_0123456789Sym2 d _z_0123456789)- type family Foo1 (a :: a) (a :: Maybe a) :: a where- Foo1 d x = Case_0123456789 d x x- sFoo5 :: forall (t :: a). Sing t -> Sing (Apply Foo5Sym0 t :: a)- sFoo4 :: forall (t :: a). Sing t -> Sing (Apply Foo4Sym0 t :: a)- sFoo3 ::- forall (t :: a) (t :: b).- Sing t -> Sing t -> Sing (Apply (Apply Foo3Sym0 t) t :: a)- sFoo2 ::- forall (t :: a) (t :: Maybe a).- Sing t -> Sing t -> Sing (Apply (Apply Foo2Sym0 t) t :: a)- sFoo1 ::- forall (t :: a) (t :: Maybe a).- Sing t -> Sing t -> Sing (Apply (Apply Foo1Sym0 t) t :: a)- sFoo5 sX- = let- lambda :: forall x. t ~ x => Sing x -> Sing (Apply Foo5Sym0 t :: a)- lambda x- = case x of {- sY- -> let- lambda ::- forall y. y ~ x => Sing y -> Sing (Case_0123456789 x y :: a)- lambda y- = applySing- (singFun1- (Proxy :: Proxy (Apply (Apply Lambda_0123456789Sym0 x) y))- (\ sArg_0123456789- -> let- lambda ::- forall arg_0123456789.- Sing arg_0123456789- -> Sing (Apply (Apply (Apply Lambda_0123456789Sym0 x) y) arg_0123456789)- lambda arg_0123456789- = case arg_0123456789 of {- _s_z_0123456789- -> let- lambda ::- forall _z_0123456789. _z_0123456789 ~ arg_0123456789 =>- Sing _z_0123456789- -> Sing (Case_0123456789 x y arg_0123456789 _z_0123456789)- lambda _z_0123456789 = x- in lambda _s_z_0123456789 } ::- Sing (Case_0123456789 x y arg_0123456789 arg_0123456789)- in lambda sArg_0123456789))- y- in lambda sY } ::- Sing (Case_0123456789 x x :: a)- in lambda sX- sFoo4 sX- = let- lambda :: forall x. t ~ x => Sing x -> Sing (Apply Foo4Sym0 t :: a)- lambda x- = case x of {- sY- -> let- lambda ::- forall y. y ~ x => Sing y -> Sing (Case_0123456789 x y :: a)- lambda y- = let- sZ :: Sing (Let0123456789ZSym2 x y :: a)- sZ = y- in sZ- in lambda sY } ::- Sing (Case_0123456789 x x :: a)- in lambda sX- sFoo3 sA sB- = let- lambda ::- forall a b. (t ~ a, t ~ b) =>- Sing a -> Sing b -> Sing (Apply (Apply Foo3Sym0 t) t :: a)- lambda a b- = let- sScrutinee_0123456789 ::- Sing (Let0123456789Scrutinee_0123456789Sym2 a b)- sScrutinee_0123456789- = applySing- (applySing (singFun2 (Proxy :: Proxy Tuple2Sym0) STuple2) a) b- in case sScrutinee_0123456789 of {- STuple2 sP _s_z_0123456789- -> let- lambda ::- forall p- _z_0123456789. Apply (Apply Tuple2Sym0 p) _z_0123456789 ~ Let0123456789Scrutinee_0123456789Sym2 a b =>- Sing p- -> Sing _z_0123456789- -> Sing (Case_0123456789 a b (Apply (Apply Tuple2Sym0 p) _z_0123456789) :: a)- lambda p _z_0123456789 = p- in lambda sP _s_z_0123456789 } ::- Sing (Case_0123456789 a b (Let0123456789Scrutinee_0123456789Sym2 a b) :: a)- in lambda sA sB- sFoo2 sD _s_z_0123456789- = let- lambda ::- forall d _z_0123456789. (t ~ d, t ~ _z_0123456789) =>- Sing d- -> Sing _z_0123456789 -> Sing (Apply (Apply Foo2Sym0 t) t :: a)- lambda d _z_0123456789- = let- sScrutinee_0123456789 ::- Sing (Let0123456789Scrutinee_0123456789Sym2 d _z_0123456789)- sScrutinee_0123456789- = applySing (singFun1 (Proxy :: Proxy JustSym0) SJust) d- in case sScrutinee_0123456789 of {- SJust sY- -> let- lambda ::- forall y. Apply JustSym0 y ~ Let0123456789Scrutinee_0123456789Sym2 d _z_0123456789 =>- Sing y- -> Sing (Case_0123456789 d _z_0123456789 (Apply JustSym0 y) :: a)- lambda y = y- in lambda sY } ::- Sing (Case_0123456789 d _z_0123456789 (Let0123456789Scrutinee_0123456789Sym2 d _z_0123456789) :: a)- in lambda sD _s_z_0123456789- sFoo1 sD sX- = let- lambda ::- forall d x. (t ~ d, t ~ x) =>- Sing d -> Sing x -> Sing (Apply (Apply Foo1Sym0 t) t :: a)- lambda d x- = case x of {- SJust sY- -> let- lambda ::- forall y. Apply JustSym0 y ~ x =>- Sing y -> Sing (Case_0123456789 d x (Apply JustSym0 y) :: a)- lambda y = y- in lambda sY- SNothing- -> let- lambda ::- NothingSym0 ~ x => Sing (Case_0123456789 d x NothingSym0 :: a)- lambda = d- in lambda } ::- Sing (Case_0123456789 d x x :: a)- in lambda sD sX
− tests/compile-and-dump/Singletons/Classes.ghc710.template
@@ -1,654 +0,0 @@-Singletons/Classes.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| infix 4 <=>- - const :: a -> b -> a- const x _ = x- fooCompare :: Foo -> Foo -> Ordering- fooCompare A A = EQ- fooCompare A B = LT- fooCompare B B = GT- fooCompare B A = EQ- - class MyOrd a where- mycompare :: a -> a -> Ordering- (<=>) :: a -> a -> Ordering- (<=>) = mycompare- infix 4 <=>- data Foo = A | B- data Foo2 = F | G- - instance Eq Foo2 where- F == F = True- G == G = True- F == G = False- G == F = False- instance MyOrd Foo where- mycompare = fooCompare- instance MyOrd () where- mycompare _ = const EQ- instance MyOrd Nat where- Zero `mycompare` Zero = EQ- Zero `mycompare` (Succ _) = LT- (Succ _) `mycompare` Zero = GT- (Succ n) `mycompare` (Succ m) = m `mycompare` n |]- ======>- const :: forall a b. a -> b -> a- const x _ = x- class MyOrd a where- mycompare :: a -> a -> Ordering- (<=>) :: a -> a -> Ordering- (<=>) = mycompare- infix 4 <=>- instance MyOrd Nat where- mycompare Zero Zero = EQ- mycompare Zero (Succ _) = LT- mycompare (Succ _) Zero = GT- mycompare (Succ n) (Succ m) = (m `mycompare` n)- instance MyOrd () where- mycompare _ = const EQ- data Foo = A | B- fooCompare :: Foo -> Foo -> Ordering- fooCompare A A = EQ- fooCompare A B = LT- fooCompare B B = GT- fooCompare B A = EQ- instance MyOrd Foo where- mycompare = fooCompare- data Foo2 = F | G- instance Eq Foo2 where- (==) F F = True- (==) G G = True- (==) F G = False- (==) G F = False- type ASym0 = A- type BSym0 = B- type FSym0 = F- type GSym0 = G- type FooCompareSym2 (t :: Foo) (t :: Foo) = FooCompare t t- instance SuppressUnusedWarnings FooCompareSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) FooCompareSym1KindInference GHC.Tuple.())- data FooCompareSym1 (l :: Foo) (l :: TyFun Foo Ordering)- = forall arg. KindOf (Apply (FooCompareSym1 l) arg) ~ KindOf (FooCompareSym2 l arg) =>- FooCompareSym1KindInference- type instance Apply (FooCompareSym1 l) l = FooCompareSym2 l l- instance SuppressUnusedWarnings FooCompareSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) FooCompareSym0KindInference GHC.Tuple.())- data FooCompareSym0 (l :: TyFun Foo (TyFun Foo Ordering -> *))- = forall arg. KindOf (Apply FooCompareSym0 arg) ~ KindOf (FooCompareSym1 arg) =>- FooCompareSym0KindInference- type instance Apply FooCompareSym0 l = FooCompareSym1 l- type ConstSym2 (t :: a0123456789) (t :: b0123456789) = Const t t- instance SuppressUnusedWarnings ConstSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) ConstSym1KindInference GHC.Tuple.())- data ConstSym1 (l :: a0123456789)- (l :: TyFun b0123456789 a0123456789)- = forall arg. KindOf (Apply (ConstSym1 l) arg) ~ KindOf (ConstSym2 l arg) =>- ConstSym1KindInference- type instance Apply (ConstSym1 l) l = ConstSym2 l l- instance SuppressUnusedWarnings ConstSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) ConstSym0KindInference GHC.Tuple.())- data ConstSym0 (l :: TyFun a0123456789 (TyFun b0123456789 a0123456789- -> *))- = forall arg. KindOf (Apply ConstSym0 arg) ~ KindOf (ConstSym1 arg) =>- ConstSym0KindInference- type instance Apply ConstSym0 l = ConstSym1 l- type family FooCompare (a :: Foo) (a :: Foo) :: Ordering where- FooCompare A A = EQSym0- FooCompare A B = LTSym0- FooCompare B B = GTSym0- FooCompare B A = EQSym0- type family Const (a :: a) (a :: b) :: a where- Const x _z_0123456789 = x- infix 4 :<=>- type MycompareSym2 (t :: a0123456789) (t :: a0123456789) =- Mycompare t t- instance SuppressUnusedWarnings MycompareSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) MycompareSym1KindInference GHC.Tuple.())- data MycompareSym1 (l :: a0123456789)- (l :: TyFun a0123456789 Ordering)- = forall arg. KindOf (Apply (MycompareSym1 l) arg) ~ KindOf (MycompareSym2 l arg) =>- MycompareSym1KindInference- type instance Apply (MycompareSym1 l) l = MycompareSym2 l l- instance SuppressUnusedWarnings MycompareSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) MycompareSym0KindInference GHC.Tuple.())- data MycompareSym0 (l :: TyFun a0123456789 (TyFun a0123456789 Ordering- -> *))- = forall arg. KindOf (Apply MycompareSym0 arg) ~ KindOf (MycompareSym1 arg) =>- MycompareSym0KindInference- type instance Apply MycompareSym0 l = MycompareSym1 l- type (:<=>$$$) (t :: a0123456789) (t :: a0123456789) = (:<=>) t t- instance SuppressUnusedWarnings (:<=>$$) where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) (:<=>$$###) GHC.Tuple.())- data (:<=>$$) (l :: a0123456789) (l :: TyFun a0123456789 Ordering)- = forall arg. KindOf (Apply ((:<=>$$) l) arg) ~ KindOf ((:<=>$$$) l arg) =>- :<=>$$###- type instance Apply ((:<=>$$) l) l = (:<=>$$$) l l- instance SuppressUnusedWarnings (:<=>$) where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) (:<=>$###) GHC.Tuple.())- data (:<=>$) (l :: TyFun a0123456789 (TyFun a0123456789 Ordering- -> *))- = forall arg. KindOf (Apply (:<=>$) arg) ~ KindOf ((:<=>$$) arg) =>- :<=>$###- type instance Apply (:<=>$) l = (:<=>$$) l- type family TFHelper_0123456789 (a :: a) (a :: a) :: Ordering where- TFHelper_0123456789 a_0123456789 a_0123456789 = Apply (Apply MycompareSym0 a_0123456789) a_0123456789- type TFHelper_0123456789Sym2 (t :: a0123456789)- (t :: a0123456789) =- TFHelper_0123456789 t t- instance SuppressUnusedWarnings TFHelper_0123456789Sym1 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) TFHelper_0123456789Sym1KindInference GHC.Tuple.())- data TFHelper_0123456789Sym1 (l :: a0123456789)- (l :: TyFun a0123456789 Ordering)- = forall arg. KindOf (Apply (TFHelper_0123456789Sym1 l) arg) ~ KindOf (TFHelper_0123456789Sym2 l arg) =>- TFHelper_0123456789Sym1KindInference- type instance Apply (TFHelper_0123456789Sym1 l) l = TFHelper_0123456789Sym2 l l- instance SuppressUnusedWarnings TFHelper_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) TFHelper_0123456789Sym0KindInference GHC.Tuple.())- data TFHelper_0123456789Sym0 (l :: TyFun a0123456789 (TyFun a0123456789 Ordering- -> *))- = forall arg. KindOf (Apply TFHelper_0123456789Sym0 arg) ~ KindOf (TFHelper_0123456789Sym1 arg) =>- TFHelper_0123456789Sym0KindInference- type instance Apply TFHelper_0123456789Sym0 l = TFHelper_0123456789Sym1 l- class kproxy ~ KProxy => PMyOrd (kproxy :: KProxy a) where- type family Mycompare (arg :: a) (arg :: a) :: Ordering- type family (:<=>) (arg :: a) (arg :: a) :: Ordering- (:<=>) (a :: a)- (a :: a) = Apply (Apply TFHelper_0123456789Sym0 a) a- type family Mycompare_0123456789 (a :: Nat)- (a :: Nat) :: Ordering where- Mycompare_0123456789 Zero Zero = EQSym0- Mycompare_0123456789 Zero (Succ _z_0123456789) = LTSym0- Mycompare_0123456789 (Succ _z_0123456789) Zero = GTSym0- Mycompare_0123456789 (Succ n) (Succ m) = Apply (Apply MycompareSym0 m) n- type Mycompare_0123456789Sym2 (t :: Nat) (t :: Nat) =- Mycompare_0123456789 t t- instance SuppressUnusedWarnings Mycompare_0123456789Sym1 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Mycompare_0123456789Sym1KindInference GHC.Tuple.())- data Mycompare_0123456789Sym1 (l :: Nat) (l :: TyFun Nat Ordering)- = forall arg. KindOf (Apply (Mycompare_0123456789Sym1 l) arg) ~ KindOf (Mycompare_0123456789Sym2 l arg) =>- Mycompare_0123456789Sym1KindInference- type instance Apply (Mycompare_0123456789Sym1 l) l = Mycompare_0123456789Sym2 l l- instance SuppressUnusedWarnings Mycompare_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Mycompare_0123456789Sym0KindInference GHC.Tuple.())- data Mycompare_0123456789Sym0 (l :: TyFun Nat (TyFun Nat Ordering- -> *))- = forall arg. KindOf (Apply Mycompare_0123456789Sym0 arg) ~ KindOf (Mycompare_0123456789Sym1 arg) =>- Mycompare_0123456789Sym0KindInference- type instance Apply Mycompare_0123456789Sym0 l = Mycompare_0123456789Sym1 l- instance PMyOrd (KProxy :: KProxy Nat) where- type Mycompare (a :: Nat) (a :: Nat) = Apply (Apply Mycompare_0123456789Sym0 a) a- type family Mycompare_0123456789 (a :: ())- (a :: ()) :: Ordering where- Mycompare_0123456789 _z_0123456789 a_0123456789 = Apply (Apply ConstSym0 EQSym0) a_0123456789- type Mycompare_0123456789Sym2 (t :: ()) (t :: ()) =- Mycompare_0123456789 t t- instance SuppressUnusedWarnings Mycompare_0123456789Sym1 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Mycompare_0123456789Sym1KindInference GHC.Tuple.())- data Mycompare_0123456789Sym1 (l :: ()) (l :: TyFun () Ordering)- = forall arg. KindOf (Apply (Mycompare_0123456789Sym1 l) arg) ~ KindOf (Mycompare_0123456789Sym2 l arg) =>- Mycompare_0123456789Sym1KindInference- type instance Apply (Mycompare_0123456789Sym1 l) l = Mycompare_0123456789Sym2 l l- instance SuppressUnusedWarnings Mycompare_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Mycompare_0123456789Sym0KindInference GHC.Tuple.())- data Mycompare_0123456789Sym0 (l :: TyFun () (TyFun () Ordering- -> *))- = forall arg. KindOf (Apply Mycompare_0123456789Sym0 arg) ~ KindOf (Mycompare_0123456789Sym1 arg) =>- Mycompare_0123456789Sym0KindInference- type instance Apply Mycompare_0123456789Sym0 l = Mycompare_0123456789Sym1 l- instance PMyOrd (KProxy :: KProxy ()) where- type Mycompare (a :: ()) (a :: ()) = Apply (Apply Mycompare_0123456789Sym0 a) a- type family Mycompare_0123456789 (a :: Foo)- (a :: Foo) :: Ordering where- Mycompare_0123456789 a_0123456789 a_0123456789 = Apply (Apply FooCompareSym0 a_0123456789) a_0123456789- type Mycompare_0123456789Sym2 (t :: Foo) (t :: Foo) =- Mycompare_0123456789 t t- instance SuppressUnusedWarnings Mycompare_0123456789Sym1 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Mycompare_0123456789Sym1KindInference GHC.Tuple.())- data Mycompare_0123456789Sym1 (l :: Foo) (l :: TyFun Foo Ordering)- = forall arg. KindOf (Apply (Mycompare_0123456789Sym1 l) arg) ~ KindOf (Mycompare_0123456789Sym2 l arg) =>- Mycompare_0123456789Sym1KindInference- type instance Apply (Mycompare_0123456789Sym1 l) l = Mycompare_0123456789Sym2 l l- instance SuppressUnusedWarnings Mycompare_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Mycompare_0123456789Sym0KindInference GHC.Tuple.())- data Mycompare_0123456789Sym0 (l :: TyFun Foo (TyFun Foo Ordering- -> *))- = forall arg. KindOf (Apply Mycompare_0123456789Sym0 arg) ~ KindOf (Mycompare_0123456789Sym1 arg) =>- Mycompare_0123456789Sym0KindInference- type instance Apply Mycompare_0123456789Sym0 l = Mycompare_0123456789Sym1 l- instance PMyOrd (KProxy :: KProxy Foo) where- type Mycompare (a :: Foo) (a :: Foo) = Apply (Apply Mycompare_0123456789Sym0 a) a- type family TFHelper_0123456789 (a :: Foo2)- (a :: Foo2) :: Bool where- TFHelper_0123456789 F F = TrueSym0- TFHelper_0123456789 G G = TrueSym0- TFHelper_0123456789 F G = FalseSym0- TFHelper_0123456789 G F = FalseSym0- type TFHelper_0123456789Sym2 (t :: Foo2) (t :: Foo2) =- TFHelper_0123456789 t t- instance SuppressUnusedWarnings TFHelper_0123456789Sym1 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) TFHelper_0123456789Sym1KindInference GHC.Tuple.())- data TFHelper_0123456789Sym1 (l :: Foo2) (l :: TyFun Foo2 Bool)- = forall arg. KindOf (Apply (TFHelper_0123456789Sym1 l) arg) ~ KindOf (TFHelper_0123456789Sym2 l arg) =>- TFHelper_0123456789Sym1KindInference- type instance Apply (TFHelper_0123456789Sym1 l) l = TFHelper_0123456789Sym2 l l- instance SuppressUnusedWarnings TFHelper_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) TFHelper_0123456789Sym0KindInference GHC.Tuple.())- data TFHelper_0123456789Sym0 (l :: TyFun Foo2 (TyFun Foo2 Bool- -> *))- = forall arg. KindOf (Apply TFHelper_0123456789Sym0 arg) ~ KindOf (TFHelper_0123456789Sym1 arg) =>- TFHelper_0123456789Sym0KindInference- type instance Apply TFHelper_0123456789Sym0 l = TFHelper_0123456789Sym1 l- instance PEq (KProxy :: KProxy Foo2) where- type (:==) (a :: Foo2) (a :: Foo2) = Apply (Apply TFHelper_0123456789Sym0 a) a- infix 4 %:<=>- sFooCompare ::- forall (t :: Foo) (t :: Foo).- Sing t- -> Sing t -> Sing (Apply (Apply FooCompareSym0 t) t :: Ordering)- sConst ::- forall (t :: a) (t :: b).- Sing t -> Sing t -> Sing (Apply (Apply ConstSym0 t) t :: a)- sFooCompare SA SA- = let- lambda ::- (t ~ ASym0, t ~ ASym0) =>- Sing (Apply (Apply FooCompareSym0 t) t :: Ordering)- lambda = SEQ- in lambda- sFooCompare SA SB- = let- lambda ::- (t ~ ASym0, t ~ BSym0) =>- Sing (Apply (Apply FooCompareSym0 t) t :: Ordering)- lambda = SLT- in lambda- sFooCompare SB SB- = let- lambda ::- (t ~ BSym0, t ~ BSym0) =>- Sing (Apply (Apply FooCompareSym0 t) t :: Ordering)- lambda = SGT- in lambda- sFooCompare SB SA- = let- lambda ::- (t ~ BSym0, t ~ ASym0) =>- Sing (Apply (Apply FooCompareSym0 t) t :: Ordering)- lambda = SEQ- in lambda- sConst sX _s_z_0123456789- = let- lambda ::- forall x _z_0123456789. (t ~ x, t ~ _z_0123456789) =>- Sing x- -> Sing _z_0123456789 -> Sing (Apply (Apply ConstSym0 t) t :: a)- lambda x _z_0123456789 = x- in lambda sX _s_z_0123456789- data instance Sing (z :: Foo) = z ~ A => SA | z ~ B => SB- type SFoo = (Sing :: Foo -> *)- instance SingKind (KProxy :: KProxy Foo) where- type DemoteRep (KProxy :: KProxy Foo) = Foo- fromSing SA = A- fromSing SB = B- toSing A = SomeSing SA- toSing B = SomeSing SB- data instance Sing (z :: Foo2) = z ~ F => SF | z ~ G => SG- type SFoo2 = (Sing :: Foo2 -> *)- instance SingKind (KProxy :: KProxy Foo2) where- type DemoteRep (KProxy :: KProxy Foo2) = Foo2- fromSing SF = F- fromSing SG = G- toSing F = SomeSing SF- toSing G = SomeSing SG- class kproxy ~ KProxy => SMyOrd (kproxy :: KProxy a) where- sMycompare ::- forall (t :: a) (t :: a).- Sing t- -> Sing t -> Sing (Apply (Apply MycompareSym0 t) t :: Ordering)- (%:<=>) ::- forall (t :: a) (t :: a).- Sing t -> Sing t -> Sing (Apply (Apply (:<=>$) t) t :: Ordering)- default (%:<=>) ::- forall (t :: a)- (t :: a). Apply (Apply (:<=>$) t) t ~ Apply (Apply TFHelper_0123456789Sym0 t) t =>- Sing t -> Sing t -> Sing (Apply (Apply (:<=>$) t) t :: Ordering)- (%:<=>) sA_0123456789 sA_0123456789- = let- lambda ::- forall a_0123456789 a_0123456789. (t ~ a_0123456789,- t ~ a_0123456789) =>- Sing a_0123456789- -> Sing a_0123456789- -> Sing (Apply (Apply (:<=>$) t) t :: Ordering)- lambda a_0123456789 a_0123456789- = applySing- (applySing- (singFun2 (Proxy :: Proxy MycompareSym0) sMycompare) a_0123456789)- a_0123456789- in lambda sA_0123456789 sA_0123456789- instance SMyOrd (KProxy :: KProxy Nat) where- sMycompare ::- forall (t :: Nat) (t :: Nat).- Sing t- -> Sing t -> Sing (Apply (Apply MycompareSym0 t) t :: Ordering)- sMycompare SZero SZero- = let- lambda ::- (t ~ ZeroSym0, t ~ ZeroSym0) =>- Sing (Apply (Apply MycompareSym0 t) t :: Ordering)- lambda = SEQ- in lambda- sMycompare SZero (SSucc _s_z_0123456789)- = let- lambda ::- forall _z_0123456789. (t ~ ZeroSym0,- t ~ Apply SuccSym0 _z_0123456789) =>- Sing _z_0123456789- -> Sing (Apply (Apply MycompareSym0 t) t :: Ordering)- lambda _z_0123456789 = SLT- in lambda _s_z_0123456789- sMycompare (SSucc _s_z_0123456789) SZero- = let- lambda ::- forall _z_0123456789. (t ~ Apply SuccSym0 _z_0123456789,- t ~ ZeroSym0) =>- Sing _z_0123456789- -> Sing (Apply (Apply MycompareSym0 t) t :: Ordering)- lambda _z_0123456789 = SGT- in lambda _s_z_0123456789- sMycompare (SSucc sN) (SSucc sM)- = let- lambda ::- forall n m. (t ~ Apply SuccSym0 n, t ~ Apply SuccSym0 m) =>- Sing n- -> Sing m -> Sing (Apply (Apply MycompareSym0 t) t :: Ordering)- lambda n m- = applySing- (applySing (singFun2 (Proxy :: Proxy MycompareSym0) sMycompare) m)- n- in lambda sN sM- instance SMyOrd (KProxy :: KProxy ()) where- sMycompare ::- forall (t :: ()) (t :: ()).- Sing t- -> Sing t -> Sing (Apply (Apply MycompareSym0 t) t :: Ordering)- sMycompare _s_z_0123456789 sA_0123456789- = let- lambda ::- forall _z_0123456789 a_0123456789. (t ~ _z_0123456789,- t ~ a_0123456789) =>- Sing _z_0123456789- -> Sing a_0123456789- -> Sing (Apply (Apply MycompareSym0 t) t :: Ordering)- lambda _z_0123456789 a_0123456789- = applySing- (applySing (singFun2 (Proxy :: Proxy ConstSym0) sConst) SEQ)- a_0123456789- in lambda _s_z_0123456789 sA_0123456789- instance SMyOrd (KProxy :: KProxy Foo) where- sMycompare ::- forall (t :: Foo) (t :: Foo).- Sing t- -> Sing t -> Sing (Apply (Apply MycompareSym0 t) t :: Ordering)- sMycompare sA_0123456789 sA_0123456789- = let- lambda ::- forall a_0123456789 a_0123456789. (t ~ a_0123456789,- t ~ a_0123456789) =>- Sing a_0123456789- -> Sing a_0123456789- -> Sing (Apply (Apply MycompareSym0 t) t :: Ordering)- lambda a_0123456789 a_0123456789- = applySing- (applySing- (singFun2 (Proxy :: Proxy FooCompareSym0) sFooCompare)- a_0123456789)- a_0123456789- in lambda sA_0123456789 sA_0123456789- instance SEq (KProxy :: KProxy Foo2) where- (%:==) ::- forall (a :: Foo2) (b :: Foo2).- Sing a -> Sing b -> Sing ((:==) a b)- (%:==) SF SF- = let- lambda :: (a ~ FSym0, b ~ FSym0) => Sing (Apply (Apply (:==$) a) b)- lambda = STrue- in lambda- (%:==) SG SG- = let- lambda :: (a ~ GSym0, b ~ GSym0) => Sing (Apply (Apply (:==$) a) b)- lambda = STrue- in lambda- (%:==) SF SG- = let- lambda :: (a ~ FSym0, b ~ GSym0) => Sing (Apply (Apply (:==$) a) b)- lambda = SFalse- in lambda- (%:==) SG SF- = let- lambda :: (a ~ GSym0, b ~ FSym0) => Sing (Apply (Apply (:==$) a) b)- lambda = SFalse- in lambda- instance SingI A where- sing = SA- instance SingI B where- sing = SB- instance SingI F where- sing = SF- instance SingI G where- sing = SG-Singletons/Classes.hs:(0,0)-(0,0): Splicing declarations- promote- [d| instance Ord Foo2 where- F `compare` F = EQ- F `compare` _ = LT- _ `compare` _ = GT- instance MyOrd Foo2 where- F `mycompare` F = EQ- F `mycompare` _ = LT- _ `mycompare` _ = GT |]- ======>- instance MyOrd Foo2 where- mycompare F F = EQ- mycompare F _ = LT- mycompare _ _ = GT- instance Ord Foo2 where- compare F F = EQ- compare F _ = LT- compare _ _ = GT- type family Mycompare_0123456789 (a :: Foo2)- (a :: Foo2) :: Ordering where- Mycompare_0123456789 F F = EQSym0- Mycompare_0123456789 F _z_0123456789 = LTSym0- Mycompare_0123456789 _z_0123456789 _z_0123456789 = GTSym0- type Mycompare_0123456789Sym2 (t :: Foo2) (t :: Foo2) =- Mycompare_0123456789 t t- instance SuppressUnusedWarnings Mycompare_0123456789Sym1 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Mycompare_0123456789Sym1KindInference GHC.Tuple.())- data Mycompare_0123456789Sym1 (l :: Foo2)- (l :: TyFun Foo2 Ordering)- = forall arg. KindOf (Apply (Mycompare_0123456789Sym1 l) arg) ~ KindOf (Mycompare_0123456789Sym2 l arg) =>- Mycompare_0123456789Sym1KindInference- type instance Apply (Mycompare_0123456789Sym1 l) l = Mycompare_0123456789Sym2 l l- instance SuppressUnusedWarnings Mycompare_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Mycompare_0123456789Sym0KindInference GHC.Tuple.())- data Mycompare_0123456789Sym0 (l :: TyFun Foo2 (TyFun Foo2 Ordering- -> *))- = forall arg. KindOf (Apply Mycompare_0123456789Sym0 arg) ~ KindOf (Mycompare_0123456789Sym1 arg) =>- Mycompare_0123456789Sym0KindInference- type instance Apply Mycompare_0123456789Sym0 l = Mycompare_0123456789Sym1 l- instance PMyOrd (KProxy :: KProxy Foo2) where- type Mycompare (a :: Foo2) (a :: Foo2) = Apply (Apply Mycompare_0123456789Sym0 a) a- type family Compare_0123456789 (a :: Foo2)- (a :: Foo2) :: Ordering where- Compare_0123456789 F F = EQSym0- Compare_0123456789 F _z_0123456789 = LTSym0- Compare_0123456789 _z_0123456789 _z_0123456789 = GTSym0- type Compare_0123456789Sym2 (t :: Foo2) (t :: Foo2) =- Compare_0123456789 t t- instance SuppressUnusedWarnings Compare_0123456789Sym1 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Compare_0123456789Sym1KindInference GHC.Tuple.())- data Compare_0123456789Sym1 (l :: Foo2) (l :: TyFun Foo2 Ordering)- = forall arg. KindOf (Apply (Compare_0123456789Sym1 l) arg) ~ KindOf (Compare_0123456789Sym2 l arg) =>- Compare_0123456789Sym1KindInference- type instance Apply (Compare_0123456789Sym1 l) l = Compare_0123456789Sym2 l l- instance SuppressUnusedWarnings Compare_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Compare_0123456789Sym0KindInference GHC.Tuple.())- data Compare_0123456789Sym0 (l :: TyFun Foo2 (TyFun Foo2 Ordering- -> *))- = forall arg. KindOf (Apply Compare_0123456789Sym0 arg) ~ KindOf (Compare_0123456789Sym1 arg) =>- Compare_0123456789Sym0KindInference- type instance Apply Compare_0123456789Sym0 l = Compare_0123456789Sym1 l- instance POrd (KProxy :: KProxy Foo2) where- type Compare (a :: Foo2) (a :: Foo2) = Apply (Apply Compare_0123456789Sym0 a) a-Singletons/Classes.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| data Nat' = Zero' | Succ' Nat'- - instance MyOrd Nat' where- Zero' `mycompare` Zero' = EQ- Zero' `mycompare` (Succ' _) = LT- (Succ' _) `mycompare` Zero' = GT- (Succ' n) `mycompare` (Succ' m) = m `mycompare` n |]- ======>- data Nat' = Zero' | Succ' Nat'- instance MyOrd Nat' where- mycompare Zero' Zero' = EQ- mycompare Zero' (Succ' _) = LT- mycompare (Succ' _) Zero' = GT- mycompare (Succ' n) (Succ' m) = (m `mycompare` n)- type Zero'Sym0 = Zero'- type Succ'Sym1 (t :: Nat') = Succ' t- instance SuppressUnusedWarnings Succ'Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Succ'Sym0KindInference GHC.Tuple.())- data Succ'Sym0 (l :: TyFun Nat' Nat')- = forall arg. KindOf (Apply Succ'Sym0 arg) ~ KindOf (Succ'Sym1 arg) =>- Succ'Sym0KindInference- type instance Apply Succ'Sym0 l = Succ'Sym1 l- type family Mycompare_0123456789 (a :: Nat')- (a :: Nat') :: Ordering where- Mycompare_0123456789 Zero' Zero' = EQSym0- Mycompare_0123456789 Zero' (Succ' _z_0123456789) = LTSym0- Mycompare_0123456789 (Succ' _z_0123456789) Zero' = GTSym0- Mycompare_0123456789 (Succ' n) (Succ' m) = Apply (Apply MycompareSym0 m) n- type Mycompare_0123456789Sym2 (t :: Nat') (t :: Nat') =- Mycompare_0123456789 t t- instance SuppressUnusedWarnings Mycompare_0123456789Sym1 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Mycompare_0123456789Sym1KindInference GHC.Tuple.())- data Mycompare_0123456789Sym1 (l :: Nat')- (l :: TyFun Nat' Ordering)- = forall arg. KindOf (Apply (Mycompare_0123456789Sym1 l) arg) ~ KindOf (Mycompare_0123456789Sym2 l arg) =>- Mycompare_0123456789Sym1KindInference- type instance Apply (Mycompare_0123456789Sym1 l) l = Mycompare_0123456789Sym2 l l- instance SuppressUnusedWarnings Mycompare_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Mycompare_0123456789Sym0KindInference GHC.Tuple.())- data Mycompare_0123456789Sym0 (l :: TyFun Nat' (TyFun Nat' Ordering- -> *))- = forall arg. KindOf (Apply Mycompare_0123456789Sym0 arg) ~ KindOf (Mycompare_0123456789Sym1 arg) =>- Mycompare_0123456789Sym0KindInference- type instance Apply Mycompare_0123456789Sym0 l = Mycompare_0123456789Sym1 l- instance PMyOrd (KProxy :: KProxy Nat') where- type Mycompare (a :: Nat') (a :: Nat') = Apply (Apply Mycompare_0123456789Sym0 a) a- data instance Sing (z :: Nat')- = z ~ Zero' => SZero' |- forall (n :: Nat'). z ~ Succ' n => SSucc' (Sing (n :: Nat'))- type SNat' = (Sing :: Nat' -> *)- instance SingKind (KProxy :: KProxy Nat') where- type DemoteRep (KProxy :: KProxy Nat') = Nat'- fromSing SZero' = Zero'- fromSing (SSucc' b) = Succ' (fromSing b)- toSing Zero' = SomeSing SZero'- toSing (Succ' b)- = case toSing b :: SomeSing (KProxy :: KProxy Nat') of {- SomeSing c -> SomeSing (SSucc' c) }- instance SMyOrd (KProxy :: KProxy Nat') where- sMycompare ::- forall (t :: Nat') (t :: Nat').- Sing t- -> Sing t- -> Sing (Apply (Apply (MycompareSym0 :: TyFun Nat' (TyFun Nat' Ordering- -> *)- -> *) t :: TyFun Nat' Ordering- -> *) t :: Ordering)- sMycompare SZero' SZero'- = let- lambda ::- (t ~ Zero'Sym0, t ~ Zero'Sym0) =>- Sing (Apply (Apply MycompareSym0 t) t :: Ordering)- lambda = SEQ- in lambda- sMycompare SZero' (SSucc' _s_z_0123456789)- = let- lambda ::- forall _z_0123456789. (t ~ Zero'Sym0,- t ~ Apply Succ'Sym0 _z_0123456789) =>- Sing _z_0123456789- -> Sing (Apply (Apply MycompareSym0 t) t :: Ordering)- lambda _z_0123456789 = SLT- in lambda _s_z_0123456789- sMycompare (SSucc' _s_z_0123456789) SZero'- = let- lambda ::- forall _z_0123456789. (t ~ Apply Succ'Sym0 _z_0123456789,- t ~ Zero'Sym0) =>- Sing _z_0123456789- -> Sing (Apply (Apply MycompareSym0 t) t :: Ordering)- lambda _z_0123456789 = SGT- in lambda _s_z_0123456789- sMycompare (SSucc' sN) (SSucc' sM)- = let- lambda ::- forall n m. (t ~ Apply Succ'Sym0 n, t ~ Apply Succ'Sym0 m) =>- Sing n- -> Sing m -> Sing (Apply (Apply MycompareSym0 t) t :: Ordering)- lambda n m- = applySing- (applySing (singFun2 (Proxy :: Proxy MycompareSym0) sMycompare) m)- n- in lambda sN sM- instance SingI Zero' where- sing = SZero'- instance SingI n => SingI (Succ' (n :: Nat')) where- sing = SSucc' sing
tests/compile-and-dump/Singletons/Classes.ghc80.template view
@@ -163,7 +163,7 @@ = forall arg. KindOf (Apply TFHelper_0123456789Sym0 arg) ~ KindOf (TFHelper_0123456789Sym1 arg) => TFHelper_0123456789Sym0KindInference type instance Apply TFHelper_0123456789Sym0 l = TFHelper_0123456789Sym1 l- class kproxy ~ KProxy => PMyOrd (kproxy :: KProxy a) where+ class kproxy ~ Proxy => PMyOrd (kproxy :: Proxy a) where type Mycompare (arg :: a) (arg :: a) :: Ordering type (:<=>) (arg :: a) (arg :: a) :: Ordering type (:<=>) a a = Apply (Apply TFHelper_0123456789Sym0 a) a@@ -192,7 +192,7 @@ = forall arg. KindOf (Apply Mycompare_0123456789Sym0 arg) ~ KindOf (Mycompare_0123456789Sym1 arg) => Mycompare_0123456789Sym0KindInference type instance Apply Mycompare_0123456789Sym0 l = Mycompare_0123456789Sym1 l- instance PMyOrd (KProxy :: KProxy Nat) where+ instance PMyOrd (Proxy :: Proxy Nat) where type Mycompare (a :: Nat) (a :: Nat) = Apply (Apply Mycompare_0123456789Sym0 a) a type family Mycompare_0123456789 (a :: ()) (a :: ()) :: Ordering where@@ -216,7 +216,7 @@ = forall arg. KindOf (Apply Mycompare_0123456789Sym0 arg) ~ KindOf (Mycompare_0123456789Sym1 arg) => Mycompare_0123456789Sym0KindInference type instance Apply Mycompare_0123456789Sym0 l = Mycompare_0123456789Sym1 l- instance PMyOrd (KProxy :: KProxy ()) where+ instance PMyOrd (Proxy :: Proxy ()) where type Mycompare (a :: ()) (a :: ()) = Apply (Apply Mycompare_0123456789Sym0 a) a type family Mycompare_0123456789 (a :: Foo) (a :: Foo) :: Ordering where@@ -240,7 +240,7 @@ = forall arg. KindOf (Apply Mycompare_0123456789Sym0 arg) ~ KindOf (Mycompare_0123456789Sym1 arg) => Mycompare_0123456789Sym0KindInference type instance Apply Mycompare_0123456789Sym0 l = Mycompare_0123456789Sym1 l- instance PMyOrd (KProxy :: KProxy Foo) where+ instance PMyOrd (Proxy :: Proxy Foo) where type Mycompare (a :: Foo) (a :: Foo) = Apply (Apply Mycompare_0123456789Sym0 a) a type family TFHelper_0123456789 (a :: Foo2) (a :: Foo2) :: Bool where@@ -267,7 +267,7 @@ = forall arg. KindOf (Apply TFHelper_0123456789Sym0 arg) ~ KindOf (TFHelper_0123456789Sym1 arg) => TFHelper_0123456789Sym0KindInference type instance Apply TFHelper_0123456789Sym0 l = TFHelper_0123456789Sym1 l- instance PEq (KProxy :: KProxy Foo2) where+ instance PEq (Proxy :: Proxy Foo2) where type (:==) (a :: Foo2) (a :: Foo2) = Apply (Apply TFHelper_0123456789Sym0 a) a infix 4 %:<=> sFooCompare ::@@ -316,21 +316,21 @@ in lambda sX _s_z_0123456789 data instance Sing (z :: Foo) = z ~ A => SA | z ~ B => SB type SFoo = (Sing :: Foo -> GHC.Types.Type)- instance SingKind (KProxy :: KProxy Foo) where- type DemoteRep (KProxy :: KProxy Foo) = Foo+ instance SingKind Foo where+ type DemoteRep Foo = Foo fromSing SA = A fromSing SB = B toSing A = SomeSing SA toSing B = SomeSing SB data instance Sing (z :: Foo2) = z ~ F => SF | z ~ G => SG type SFoo2 = (Sing :: Foo2 -> GHC.Types.Type)- instance SingKind (KProxy :: KProxy Foo2) where- type DemoteRep (KProxy :: KProxy Foo2) = Foo2+ instance SingKind Foo2 where+ type DemoteRep Foo2 = Foo2 fromSing SF = F fromSing SG = G toSing F = SomeSing SF toSing G = SomeSing SG- class kproxy ~ KProxy => SMyOrd (kproxy :: KProxy a) where+ class SMyOrd a where sMycompare :: forall (t :: a) (t :: a). Sing t@@ -356,7 +356,7 @@ (singFun2 (Proxy :: Proxy MycompareSym0) sMycompare) a_0123456789) a_0123456789 in lambda sA_0123456789 sA_0123456789- instance SMyOrd (KProxy :: KProxy Nat) where+ instance SMyOrd Nat where sMycompare :: forall (t :: Nat) (t :: Nat). Sing t@@ -398,7 +398,7 @@ (applySing (singFun2 (Proxy :: Proxy MycompareSym0) sMycompare) m) n in lambda sN sM- instance SMyOrd (KProxy :: KProxy ()) where+ instance SMyOrd () where sMycompare :: forall (t :: ()) (t :: ()). Sing t@@ -416,7 +416,7 @@ (applySing (singFun2 (Proxy :: Proxy ConstSym0) sConst) SEQ) a_0123456789 in lambda _s_z_0123456789 sA_0123456789- instance SMyOrd (KProxy :: KProxy Foo) where+ instance SMyOrd Foo where sMycompare :: forall (t :: Foo) (t :: Foo). Sing t@@ -436,7 +436,7 @@ a_0123456789) a_0123456789 in lambda sA_0123456789 sA_0123456789- instance SEq (KProxy :: KProxy Foo2) where+ instance SEq Foo2 where (%:==) :: forall (a :: Foo2) (b :: Foo2). Sing a -> Sing b -> Sing ((:==) a b)@@ -512,7 +512,7 @@ = forall arg. KindOf (Apply Mycompare_0123456789Sym0 arg) ~ KindOf (Mycompare_0123456789Sym1 arg) => Mycompare_0123456789Sym0KindInference type instance Apply Mycompare_0123456789Sym0 l = Mycompare_0123456789Sym1 l- instance PMyOrd (KProxy :: KProxy Foo2) where+ instance PMyOrd (Proxy :: Proxy Foo2) where type Mycompare (a :: Foo2) (a :: Foo2) = Apply (Apply Mycompare_0123456789Sym0 a) a type family Compare_0123456789 (a :: Foo2) (a :: Foo2) :: Ordering where@@ -538,7 +538,7 @@ = forall arg. KindOf (Apply Compare_0123456789Sym0 arg) ~ KindOf (Compare_0123456789Sym1 arg) => Compare_0123456789Sym0KindInference type instance Apply Compare_0123456789Sym0 l = Compare_0123456789Sym1 l- instance POrd (KProxy :: KProxy Foo2) where+ instance POrd (Proxy :: Proxy Foo2) where type Compare (a :: Foo2) (a :: Foo2) = Apply (Apply Compare_0123456789Sym0 a) a Singletons/Classes.hs:(0,0)-(0,0): Splicing declarations singletons@@ -591,21 +591,21 @@ = forall arg. KindOf (Apply Mycompare_0123456789Sym0 arg) ~ KindOf (Mycompare_0123456789Sym1 arg) => Mycompare_0123456789Sym0KindInference type instance Apply Mycompare_0123456789Sym0 l = Mycompare_0123456789Sym1 l- instance PMyOrd (KProxy :: KProxy Nat') where+ instance PMyOrd (Proxy :: Proxy Nat') where type Mycompare (a :: Nat') (a :: Nat') = Apply (Apply Mycompare_0123456789Sym0 a) a data instance Sing (z :: Nat') = z ~ Zero' => SZero' | forall (n :: Nat'). z ~ Succ' n => SSucc' (Sing (n :: Nat')) type SNat' = (Sing :: Nat' -> GHC.Types.Type)- instance SingKind (KProxy :: KProxy Nat') where- type DemoteRep (KProxy :: KProxy Nat') = Nat'+ instance SingKind Nat' where+ type DemoteRep Nat' = Nat' fromSing SZero' = Zero' fromSing (SSucc' b) = Succ' (fromSing b) toSing Zero' = SomeSing SZero' toSing (Succ' b)- = case toSing b :: SomeSing (KProxy :: KProxy Nat') of {+ = case toSing b :: SomeSing Nat' of { SomeSing c -> SomeSing (SSucc' c) }- instance SMyOrd (KProxy :: KProxy Nat') where+ instance SMyOrd Nat' where sMycompare :: forall (t :: Nat') (t :: Nat'). Sing t
− tests/compile-and-dump/Singletons/Classes2.ghc710.template
@@ -1,115 +0,0 @@-Singletons/Classes2.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| data NatFoo = ZeroFoo | SuccFoo NatFoo- - instance MyOrd NatFoo where- ZeroFoo `mycompare` ZeroFoo = EQ- ZeroFoo `mycompare` (SuccFoo _) = LT- (SuccFoo _) `mycompare` ZeroFoo = GT- (SuccFoo n) `mycompare` (SuccFoo m) = m `mycompare` n |]- ======>- data NatFoo = ZeroFoo | SuccFoo NatFoo- instance MyOrd NatFoo where- mycompare ZeroFoo ZeroFoo = EQ- mycompare ZeroFoo (SuccFoo _) = LT- mycompare (SuccFoo _) ZeroFoo = GT- mycompare (SuccFoo n) (SuccFoo m) = (m `mycompare` n)- type ZeroFooSym0 = ZeroFoo- type SuccFooSym1 (t :: NatFoo) = SuccFoo t- instance SuppressUnusedWarnings SuccFooSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) SuccFooSym0KindInference GHC.Tuple.())- data SuccFooSym0 (l :: TyFun NatFoo NatFoo)- = forall arg. KindOf (Apply SuccFooSym0 arg) ~ KindOf (SuccFooSym1 arg) =>- SuccFooSym0KindInference- type instance Apply SuccFooSym0 l = SuccFooSym1 l- type family Mycompare_0123456789 (a :: NatFoo)- (a :: NatFoo) :: Ordering where- Mycompare_0123456789 ZeroFoo ZeroFoo = EQSym0- Mycompare_0123456789 ZeroFoo (SuccFoo _z_0123456789) = LTSym0- Mycompare_0123456789 (SuccFoo _z_0123456789) ZeroFoo = GTSym0- Mycompare_0123456789 (SuccFoo n) (SuccFoo m) = Apply (Apply MycompareSym0 m) n- type Mycompare_0123456789Sym2 (t :: NatFoo) (t :: NatFoo) =- Mycompare_0123456789 t t- instance SuppressUnusedWarnings Mycompare_0123456789Sym1 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Mycompare_0123456789Sym1KindInference GHC.Tuple.())- data Mycompare_0123456789Sym1 (l :: NatFoo)- (l :: TyFun NatFoo Ordering)- = forall arg. KindOf (Apply (Mycompare_0123456789Sym1 l) arg) ~ KindOf (Mycompare_0123456789Sym2 l arg) =>- Mycompare_0123456789Sym1KindInference- type instance Apply (Mycompare_0123456789Sym1 l) l = Mycompare_0123456789Sym2 l l- instance SuppressUnusedWarnings Mycompare_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Mycompare_0123456789Sym0KindInference GHC.Tuple.())- data Mycompare_0123456789Sym0 (l :: TyFun NatFoo (TyFun NatFoo Ordering- -> *))- = forall arg. KindOf (Apply Mycompare_0123456789Sym0 arg) ~ KindOf (Mycompare_0123456789Sym1 arg) =>- Mycompare_0123456789Sym0KindInference- type instance Apply Mycompare_0123456789Sym0 l = Mycompare_0123456789Sym1 l- instance PMyOrd (KProxy :: KProxy NatFoo) where- type Mycompare (a :: NatFoo) (a :: NatFoo) = Apply (Apply Mycompare_0123456789Sym0 a) a- data instance Sing (z :: NatFoo)- = z ~ ZeroFoo => SZeroFoo |- forall (n :: NatFoo). z ~ SuccFoo n =>- SSuccFoo (Sing (n :: NatFoo))- type SNatFoo = (Sing :: NatFoo -> *)- instance SingKind (KProxy :: KProxy NatFoo) where- type DemoteRep (KProxy :: KProxy NatFoo) = NatFoo- fromSing SZeroFoo = ZeroFoo- fromSing (SSuccFoo b) = SuccFoo (fromSing b)- toSing ZeroFoo = SomeSing SZeroFoo- toSing (SuccFoo b)- = case toSing b :: SomeSing (KProxy :: KProxy NatFoo) of {- SomeSing c -> SomeSing (SSuccFoo c) }- instance SMyOrd (KProxy :: KProxy NatFoo) where- sMycompare ::- forall (t0 :: NatFoo) (t1 :: NatFoo).- Sing t0- -> Sing t1- -> Sing (Apply (Apply (MycompareSym0 :: TyFun NatFoo (TyFun NatFoo Ordering- -> *)- -> *) t0 :: TyFun NatFoo Ordering- -> *) t1 :: Ordering)- sMycompare SZeroFoo SZeroFoo- = let- lambda ::- (t0 ~ ZeroFooSym0, t1 ~ ZeroFooSym0) =>- Sing (Apply (Apply MycompareSym0 t0) t1 :: Ordering)- lambda = SEQ- in lambda- sMycompare SZeroFoo (SSuccFoo _s_z_0123456789)- = let- lambda ::- forall _z_0123456789. (t0 ~ ZeroFooSym0,- t1 ~ Apply SuccFooSym0 _z_0123456789) =>- Sing _z_0123456789- -> Sing (Apply (Apply MycompareSym0 t0) t1 :: Ordering)- lambda _z_0123456789 = SLT- in lambda _s_z_0123456789- sMycompare (SSuccFoo _s_z_0123456789) SZeroFoo- = let- lambda ::- forall _z_0123456789. (t0 ~ Apply SuccFooSym0 _z_0123456789,- t1 ~ ZeroFooSym0) =>- Sing _z_0123456789- -> Sing (Apply (Apply MycompareSym0 t0) t1 :: Ordering)- lambda _z_0123456789 = SGT- in lambda _s_z_0123456789- sMycompare (SSuccFoo sN) (SSuccFoo sM)- = let- lambda ::- forall n m. (t0 ~ Apply SuccFooSym0 n, t1 ~ Apply SuccFooSym0 m) =>- Sing n- -> Sing m -> Sing (Apply (Apply MycompareSym0 t0) t1 :: Ordering)- lambda n m- = applySing- (applySing (singFun2 (Proxy :: Proxy MycompareSym0) sMycompare) m)- n- in lambda sN sM- instance SingI ZeroFoo where- sing = SZeroFoo- instance SingI n => SingI (SuccFoo (n :: NatFoo)) where- sing = SSuccFoo sing
tests/compile-and-dump/Singletons/Classes2.ghc80.template view
@@ -49,22 +49,22 @@ = forall arg. KindOf (Apply Mycompare_0123456789Sym0 arg) ~ KindOf (Mycompare_0123456789Sym1 arg) => Mycompare_0123456789Sym0KindInference type instance Apply Mycompare_0123456789Sym0 l = Mycompare_0123456789Sym1 l- instance PMyOrd (KProxy :: KProxy NatFoo) where+ instance PMyOrd (Proxy :: Proxy NatFoo) where type Mycompare (a :: NatFoo) (a :: NatFoo) = Apply (Apply Mycompare_0123456789Sym0 a) a data instance Sing (z :: NatFoo) = z ~ ZeroFoo => SZeroFoo | forall (n :: NatFoo). z ~ SuccFoo n => SSuccFoo (Sing (n :: NatFoo)) type SNatFoo = (Sing :: NatFoo -> GHC.Types.Type)- instance SingKind (KProxy :: KProxy NatFoo) where- type DemoteRep (KProxy :: KProxy NatFoo) = NatFoo+ instance SingKind NatFoo where+ type DemoteRep NatFoo = NatFoo fromSing SZeroFoo = ZeroFoo fromSing (SSuccFoo b) = SuccFoo (fromSing b) toSing ZeroFoo = SomeSing SZeroFoo toSing (SuccFoo b)- = case toSing b :: SomeSing (KProxy :: KProxy NatFoo) of {+ = case toSing b :: SomeSing NatFoo of { SomeSing c -> SomeSing (SSuccFoo c) }- instance SMyOrd (KProxy :: KProxy NatFoo) where+ instance SMyOrd NatFoo where sMycompare :: forall (t0 :: NatFoo) (t1 :: NatFoo). Sing t0
− tests/compile-and-dump/Singletons/Contains.ghc710.template
@@ -1,57 +0,0 @@-Singletons/Contains.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| contains :: Eq a => a -> [a] -> Bool- contains _ [] = False- contains elt (h : t) = (elt == h) || (contains elt t) |]- ======>- contains :: forall a. Eq a => a -> [a] -> Bool- contains _ GHC.Types.[] = False- contains elt (h GHC.Types.: t) = ((elt == h) || (contains elt t))- type ContainsSym2 (t :: a0123456789) (t :: [a0123456789]) =- Contains t t- instance SuppressUnusedWarnings ContainsSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) ContainsSym1KindInference GHC.Tuple.())- data ContainsSym1 (l :: a0123456789)- (l :: TyFun [a0123456789] Bool)- = forall arg. KindOf (Apply (ContainsSym1 l) arg) ~ KindOf (ContainsSym2 l arg) =>- ContainsSym1KindInference- type instance Apply (ContainsSym1 l) l = ContainsSym2 l l- instance SuppressUnusedWarnings ContainsSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) ContainsSym0KindInference GHC.Tuple.())- data ContainsSym0 (l :: TyFun a0123456789 (TyFun [a0123456789] Bool- -> *))- = forall arg. KindOf (Apply ContainsSym0 arg) ~ KindOf (ContainsSym1 arg) =>- ContainsSym0KindInference- type instance Apply ContainsSym0 l = ContainsSym1 l- type family Contains (a :: a) (a :: [a]) :: Bool where- Contains _z_0123456789 '[] = FalseSym0- Contains elt ((:) h t) = Apply (Apply (:||$) (Apply (Apply (:==$) elt) h)) (Apply (Apply ContainsSym0 elt) t)- sContains ::- forall (t :: a) (t :: [a]). SEq (KProxy :: KProxy a) =>- Sing t -> Sing t -> Sing (Apply (Apply ContainsSym0 t) t :: Bool)- sContains _s_z_0123456789 SNil- = let- lambda ::- forall _z_0123456789. (t ~ _z_0123456789, t ~ '[]) =>- Sing _z_0123456789 -> Sing (Apply (Apply ContainsSym0 t) t :: Bool)- lambda _z_0123456789 = SFalse- in lambda _s_z_0123456789- sContains sElt (SCons sH sT)- = let- lambda ::- forall elt h t. (t ~ elt, t ~ Apply (Apply (:$) h) t) =>- Sing elt- -> Sing h- -> Sing t -> Sing (Apply (Apply ContainsSym0 t) t :: Bool)- lambda elt h t- = applySing- (applySing- (singFun2 (Proxy :: Proxy (:||$)) (%:||))- (applySing- (applySing (singFun2 (Proxy :: Proxy (:==$)) (%:==)) elt) h))- (applySing- (applySing (singFun2 (Proxy :: Proxy ContainsSym0) sContains) elt)- t)- in lambda sElt sH sT
tests/compile-and-dump/Singletons/Contains.ghc80.template view
@@ -30,7 +30,7 @@ Contains elt ((:) h t) = Apply (Apply (:||$) (Apply (Apply (:==$) elt) h)) (Apply (Apply ContainsSym0 elt) t) sContains :: forall (t :: a) (t :: [a]).- SEq (KProxy :: KProxy a) =>+ SEq a => Sing t -> Sing t -> Sing (Apply (Apply ContainsSym0 t) t :: Bool) sContains _s_z_0123456789 SNil = let
− tests/compile-and-dump/Singletons/DataValues.ghc710.template
@@ -1,106 +0,0 @@-Singletons/DataValues.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| pr = Pair (Succ Zero) ([Zero])- complex = Pair (Pair (Just Zero) Zero) False- tuple = (False, Just Zero, True)- aList = [Zero, Succ Zero, Succ (Succ Zero)]- - data Pair a b- = Pair a b- deriving (Show) |]- ======>- data Pair a b- = Pair a b- deriving (Show)- pr = Pair (Succ Zero) [Zero]- complex = Pair (Pair (Just Zero) Zero) False- tuple = (False, Just Zero, True)- aList = [Zero, Succ Zero, Succ (Succ Zero)]- type PairSym2 (t :: a0123456789) (t :: b0123456789) = Pair t t- instance SuppressUnusedWarnings PairSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) PairSym1KindInference GHC.Tuple.())- data PairSym1 (l :: a0123456789)- (l :: TyFun b0123456789 (Pair a0123456789 b0123456789))- = forall arg. KindOf (Apply (PairSym1 l) arg) ~ KindOf (PairSym2 l arg) =>- PairSym1KindInference- type instance Apply (PairSym1 l) l = PairSym2 l l- instance SuppressUnusedWarnings PairSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) PairSym0KindInference GHC.Tuple.())- data PairSym0 (l :: TyFun a0123456789 (TyFun b0123456789 (Pair a0123456789 b0123456789)- -> *))- = forall arg. KindOf (Apply PairSym0 arg) ~ KindOf (PairSym1 arg) =>- PairSym0KindInference- type instance Apply PairSym0 l = PairSym1 l- type AListSym0 = AList- type TupleSym0 = Tuple- type ComplexSym0 = Complex- type PrSym0 = Pr- type family AList where- AList = Apply (Apply (:$) ZeroSym0) (Apply (Apply (:$) (Apply SuccSym0 ZeroSym0)) (Apply (Apply (:$) (Apply SuccSym0 (Apply SuccSym0 ZeroSym0))) '[]))- type family Tuple where- Tuple = Apply (Apply (Apply Tuple3Sym0 FalseSym0) (Apply JustSym0 ZeroSym0)) TrueSym0- type family Complex where- Complex = Apply (Apply PairSym0 (Apply (Apply PairSym0 (Apply JustSym0 ZeroSym0)) ZeroSym0)) FalseSym0- type family Pr where- Pr = Apply (Apply PairSym0 (Apply SuccSym0 ZeroSym0)) (Apply (Apply (:$) ZeroSym0) '[])- sAList :: Sing AListSym0- sTuple :: Sing TupleSym0- sComplex :: Sing ComplexSym0- sPr :: Sing PrSym0- sAList- = applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) SZero)- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing (singFun1 (Proxy :: Proxy SuccSym0) SSucc) SZero))- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (singFun1 (Proxy :: Proxy SuccSym0) SSucc)- (applySing (singFun1 (Proxy :: Proxy SuccSym0) SSucc) SZero)))- SNil))- sTuple- = applySing- (applySing- (applySing (singFun3 (Proxy :: Proxy Tuple3Sym0) STuple3) SFalse)- (applySing (singFun1 (Proxy :: Proxy JustSym0) SJust) SZero))- STrue- sComplex- = applySing- (applySing- (singFun2 (Proxy :: Proxy PairSym0) SPair)- (applySing- (applySing- (singFun2 (Proxy :: Proxy PairSym0) SPair)- (applySing (singFun1 (Proxy :: Proxy JustSym0) SJust) SZero))- SZero))- SFalse- sPr- = applySing- (applySing- (singFun2 (Proxy :: Proxy PairSym0) SPair)- (applySing (singFun1 (Proxy :: Proxy SuccSym0) SSucc) SZero))- (applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) SZero) SNil)- data instance Sing (z :: Pair a b)- = forall (n :: a) (n :: b). z ~ Pair n n =>- SPair (Sing (n :: a)) (Sing (n :: b))- type SPair = (Sing :: Pair a b -> *)- instance (SingKind (KProxy :: KProxy a),- SingKind (KProxy :: KProxy b)) =>- SingKind (KProxy :: KProxy (Pair a b)) where- type DemoteRep (KProxy :: KProxy (Pair a b)) = Pair (DemoteRep (KProxy :: KProxy a)) (DemoteRep (KProxy :: KProxy b))- fromSing (SPair b b) = Pair (fromSing b) (fromSing b)- toSing (Pair b b)- = case- GHC.Tuple.(,)- (toSing b :: SomeSing (KProxy :: KProxy a))- (toSing b :: SomeSing (KProxy :: KProxy b))- of {- GHC.Tuple.(,) (SomeSing c) (SomeSing c) -> SomeSing (SPair c c) }- instance (SingI n, SingI n) => SingI (Pair (n :: a) (n :: b)) where- sing = SPair sing sing
tests/compile-and-dump/Singletons/DataValues.ghc80.template view
@@ -90,16 +90,12 @@ = forall (n :: a) (n :: b). z ~ Pair n n => SPair (Sing (n :: a)) (Sing (n :: b)) type SPair = (Sing :: Pair a b -> GHC.Types.Type)- instance (SingKind (KProxy :: KProxy a),- SingKind (KProxy :: KProxy b)) =>- SingKind (KProxy :: KProxy (Pair a b)) where- type DemoteRep (KProxy :: KProxy (Pair a b)) = Pair (DemoteRep (KProxy :: KProxy a)) (DemoteRep (KProxy :: KProxy b))+ instance (SingKind a, SingKind b) => SingKind (Pair a b) where+ type DemoteRep (Pair a b) = Pair (DemoteRep a) (DemoteRep b) fromSing (SPair b b) = Pair (fromSing b) (fromSing b) toSing (Pair b b) = case- GHC.Tuple.(,)- (toSing b :: SomeSing (KProxy :: KProxy a))- (toSing b :: SomeSing (KProxy :: KProxy b))+ GHC.Tuple.(,) (toSing b :: SomeSing a) (toSing b :: SomeSing b) of { GHC.Tuple.(,) (SomeSing c) (SomeSing c) -> SomeSing (SPair c c) } instance (SingI n, SingI n) => SingI (Pair (n :: a) (n :: b)) where
− tests/compile-and-dump/Singletons/Empty.ghc710.template
@@ -1,14 +0,0 @@-Singletons/Empty.hs:(0,0)-(0,0): Splicing declarations- singletons [d| data Empty |]- ======>- data Empty- data instance Sing (z :: Empty)- type SEmpty = (Sing :: Empty -> *)- instance SingKind (KProxy :: KProxy Empty) where- type DemoteRep (KProxy :: KProxy Empty) = Empty- fromSing z- = case z of {- _ -> error "Empty case reached -- this should be impossible" }- toSing z- = case z of {- _ -> error "Empty case reached -- this should be impossible" }
tests/compile-and-dump/Singletons/Empty.ghc80.template view
@@ -4,8 +4,8 @@ data Empty data instance Sing (z :: Empty) type SEmpty = (Sing :: Empty -> GHC.Types.Type)- instance SingKind (KProxy :: KProxy Empty) where- type DemoteRep (KProxy :: KProxy Empty) = Empty+ instance SingKind Empty where+ type DemoteRep Empty = Empty fromSing z = case z of { _ -> error "Empty case reached -- this should be impossible" }
− tests/compile-and-dump/Singletons/EnumDeriving.ghc710.template
@@ -1,284 +0,0 @@-Singletons/EnumDeriving.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| data Foo- = Bar | Baz | Bum- deriving (Enum)- data Quux = Q1 | Q2 |]- ======>- data Foo- = Bar | Baz | Bum- deriving (Enum)- data Quux = Q1 | Q2- type BarSym0 = Bar- type BazSym0 = Baz- type BumSym0 = Bum- type Q1Sym0 = Q1- type Q2Sym0 = Q2- type family Case_0123456789 n t where- Case_0123456789 n True = BumSym0- Case_0123456789 n False = Apply ErrorSym0 "toEnum: bad argument"- type family Case_0123456789 n t where- Case_0123456789 n True = BazSym0- Case_0123456789 n False = Case_0123456789 n (Apply (Apply (:==$) n) (FromInteger 2))- type family Case_0123456789 n t where- Case_0123456789 n True = BarSym0- Case_0123456789 n False = Case_0123456789 n (Apply (Apply (:==$) n) (FromInteger 1))- type family ToEnum_0123456789 (a :: GHC.TypeLits.Nat) :: Foo where- ToEnum_0123456789 n = Case_0123456789 n (Apply (Apply (:==$) n) (FromInteger 0))- type ToEnum_0123456789Sym1 (t :: GHC.TypeLits.Nat) =- ToEnum_0123456789 t- instance SuppressUnusedWarnings ToEnum_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) ToEnum_0123456789Sym0KindInference GHC.Tuple.())- data ToEnum_0123456789Sym0 (l :: TyFun GHC.TypeLits.Nat Foo)- = forall arg. KindOf (Apply ToEnum_0123456789Sym0 arg) ~ KindOf (ToEnum_0123456789Sym1 arg) =>- ToEnum_0123456789Sym0KindInference- type instance Apply ToEnum_0123456789Sym0 l = ToEnum_0123456789Sym1 l- type family FromEnum_0123456789 (a :: Foo) :: GHC.TypeLits.Nat where- FromEnum_0123456789 Bar = FromInteger 0- FromEnum_0123456789 Baz = FromInteger 1- FromEnum_0123456789 Bum = FromInteger 2- type FromEnum_0123456789Sym1 (t :: Foo) = FromEnum_0123456789 t- instance SuppressUnusedWarnings FromEnum_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) FromEnum_0123456789Sym0KindInference GHC.Tuple.())- data FromEnum_0123456789Sym0 (l :: TyFun Foo GHC.TypeLits.Nat)- = forall arg. KindOf (Apply FromEnum_0123456789Sym0 arg) ~ KindOf (FromEnum_0123456789Sym1 arg) =>- FromEnum_0123456789Sym0KindInference- type instance Apply FromEnum_0123456789Sym0 l = FromEnum_0123456789Sym1 l- instance PEnum (KProxy :: KProxy Foo) where- type ToEnum (a :: GHC.TypeLits.Nat) = Apply ToEnum_0123456789Sym0 a- type FromEnum (a :: Foo) = Apply FromEnum_0123456789Sym0 a- data instance Sing (z :: Foo)- = z ~ Bar => SBar | z ~ Baz => SBaz | z ~ Bum => SBum- type SFoo = (Sing :: Foo -> *)- instance SingKind (KProxy :: KProxy Foo) where- type DemoteRep (KProxy :: KProxy Foo) = Foo- fromSing SBar = Bar- fromSing SBaz = Baz- fromSing SBum = Bum- toSing Bar = SomeSing SBar- toSing Baz = SomeSing SBaz- toSing Bum = SomeSing SBum- data instance Sing (z :: Quux) = z ~ Q1 => SQ1 | z ~ Q2 => SQ2- type SQuux = (Sing :: Quux -> *)- instance SingKind (KProxy :: KProxy Quux) where- type DemoteRep (KProxy :: KProxy Quux) = Quux- fromSing SQ1 = Q1- fromSing SQ2 = Q2- toSing Q1 = SomeSing SQ1- toSing Q2 = SomeSing SQ2- instance SEnum (KProxy :: KProxy Foo) where- sToEnum ::- forall (t0 :: GHC.TypeLits.Nat).- Sing t0- -> Sing (Apply (ToEnumSym0 :: TyFun GHC.TypeLits.Nat Foo- -> *) t0 :: Foo)- sFromEnum ::- forall (t0 :: Foo).- Sing t0- -> Sing (Apply (FromEnumSym0 :: TyFun Foo GHC.TypeLits.Nat- -> *) t0 :: GHC.TypeLits.Nat)- sToEnum sN- = let- lambda ::- forall n. t0 ~ n => Sing n -> Sing (Apply ToEnumSym0 t0 :: Foo)- lambda n- = case- applySing- (applySing (singFun2 (Proxy :: Proxy (:==$)) (%:==)) n)- (sFromInteger (sing :: Sing 0))- of {- STrue- -> let- lambda ::- TrueSym0 ~ Apply (Apply (:==$) n) (FromInteger 0) =>- Sing (Case_0123456789 n TrueSym0 :: Foo)- lambda = SBar- in lambda- SFalse- -> let- lambda ::- FalseSym0 ~ Apply (Apply (:==$) n) (FromInteger 0) =>- Sing (Case_0123456789 n FalseSym0 :: Foo)- lambda- = case- applySing- (applySing (singFun2 (Proxy :: Proxy (:==$)) (%:==)) n)- (sFromInteger (sing :: Sing 1))- of {- STrue- -> let- lambda ::- TrueSym0 ~ Apply (Apply (:==$) n) (FromInteger 1) =>- Sing (Case_0123456789 n TrueSym0 :: Foo)- lambda = SBaz- in lambda- SFalse- -> let- lambda ::- FalseSym0 ~ Apply (Apply (:==$) n) (FromInteger 1) =>- Sing (Case_0123456789 n FalseSym0 :: Foo)- lambda- = case- applySing- (applySing- (singFun2 (Proxy :: Proxy (:==$)) (%:==)) n)- (sFromInteger (sing :: Sing 2))- of {- STrue- -> let- lambda ::- TrueSym0 ~ Apply (Apply (:==$) n) (FromInteger 2) =>- Sing (Case_0123456789 n TrueSym0 :: Foo)- lambda = SBum- in lambda- SFalse- -> let- lambda ::- FalseSym0 ~ Apply (Apply (:==$) n) (FromInteger 2) =>- Sing (Case_0123456789 n FalseSym0 :: Foo)- lambda- = sError (sing :: Sing "toEnum: bad argument")- in lambda } ::- Sing (Case_0123456789 n (Apply (Apply (:==$) n) (FromInteger 2)) :: Foo)- in lambda } ::- Sing (Case_0123456789 n (Apply (Apply (:==$) n) (FromInteger 1)) :: Foo)- in lambda } ::- Sing (Case_0123456789 n (Apply (Apply (:==$) n) (FromInteger 0)) :: Foo)- in lambda sN- sFromEnum SBar- = let- lambda ::- t0 ~ BarSym0 => Sing (Apply FromEnumSym0 t0 :: GHC.TypeLits.Nat)- lambda = sFromInteger (sing :: Sing 0)- in lambda- sFromEnum SBaz- = let- lambda ::- t0 ~ BazSym0 => Sing (Apply FromEnumSym0 t0 :: GHC.TypeLits.Nat)- lambda = sFromInteger (sing :: Sing 1)- in lambda- sFromEnum SBum- = let- lambda ::- t0 ~ BumSym0 => Sing (Apply FromEnumSym0 t0 :: GHC.TypeLits.Nat)- lambda = sFromInteger (sing :: Sing 2)- in lambda- instance SingI Bar where- sing = SBar- instance SingI Baz where- sing = SBaz- instance SingI Bum where- sing = SBum- instance SingI Q1 where- sing = SQ1- instance SingI Q2 where- sing = SQ2-Singletons/EnumDeriving.hs:0:0:: Splicing declarations- singEnumInstance ''Quux- ======>- type family Case_0123456789 n t where- Case_0123456789 n True = Q2Sym0- Case_0123456789 n False = Apply ErrorSym0 "toEnum: bad argument"- type family Case_0123456789 n t where- Case_0123456789 n True = Q1Sym0- Case_0123456789 n False = Case_0123456789 n (Apply (Apply (:==$) n) (FromInteger 1))- type family ToEnum_0123456789 (a :: GHC.TypeLits.Nat) :: Quux where- ToEnum_0123456789 n = Case_0123456789 n (Apply (Apply (:==$) n) (FromInteger 0))- type ToEnum_0123456789Sym1 (t :: GHC.TypeLits.Nat) =- ToEnum_0123456789 t- instance SuppressUnusedWarnings ToEnum_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) ToEnum_0123456789Sym0KindInference GHC.Tuple.())- data ToEnum_0123456789Sym0 (l :: TyFun GHC.TypeLits.Nat Quux)- = forall arg. KindOf (Apply ToEnum_0123456789Sym0 arg) ~ KindOf (ToEnum_0123456789Sym1 arg) =>- ToEnum_0123456789Sym0KindInference- type instance Apply ToEnum_0123456789Sym0 l = ToEnum_0123456789Sym1 l- type family FromEnum_0123456789 (a :: Quux) :: GHC.TypeLits.Nat where- FromEnum_0123456789 Q1 = FromInteger 0- FromEnum_0123456789 Q2 = FromInteger 1- type FromEnum_0123456789Sym1 (t :: Quux) = FromEnum_0123456789 t- instance SuppressUnusedWarnings FromEnum_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) FromEnum_0123456789Sym0KindInference GHC.Tuple.())- data FromEnum_0123456789Sym0 (l :: TyFun Quux GHC.TypeLits.Nat)- = forall arg. KindOf (Apply FromEnum_0123456789Sym0 arg) ~ KindOf (FromEnum_0123456789Sym1 arg) =>- FromEnum_0123456789Sym0KindInference- type instance Apply FromEnum_0123456789Sym0 l = FromEnum_0123456789Sym1 l- instance PEnum (KProxy :: KProxy Quux) where- type ToEnum (a :: GHC.TypeLits.Nat) = Apply ToEnum_0123456789Sym0 a- type FromEnum (a :: Quux) = Apply FromEnum_0123456789Sym0 a- instance SEnum (KProxy :: KProxy Quux) where- sToEnum ::- forall (t0 :: GHC.TypeLits.Nat).- Sing t0- -> Sing (Apply (ToEnumSym0 :: TyFun GHC.TypeLits.Nat Quux- -> *) t0 :: Quux)- sFromEnum ::- forall (t0 :: Quux).- Sing t0- -> Sing (Apply (FromEnumSym0 :: TyFun Quux GHC.TypeLits.Nat- -> *) t0 :: GHC.TypeLits.Nat)- sToEnum sN- = let- lambda ::- forall n. t0 ~ n => Sing n -> Sing (Apply ToEnumSym0 t0 :: Quux)- lambda n- = case- applySing- (applySing (singFun2 (Proxy :: Proxy (:==$)) (%:==)) n)- (sFromInteger (sing :: Sing 0))- of {- STrue- -> let- lambda ::- TrueSym0 ~ Apply (Apply (:==$) n) (FromInteger 0) =>- Sing (Case_0123456789 n TrueSym0 :: Quux)- lambda = SQ1- in lambda- SFalse- -> let- lambda ::- FalseSym0 ~ Apply (Apply (:==$) n) (FromInteger 0) =>- Sing (Case_0123456789 n FalseSym0 :: Quux)- lambda- = case- applySing- (applySing (singFun2 (Proxy :: Proxy (:==$)) (%:==)) n)- (sFromInteger (sing :: Sing 1))- of {- STrue- -> let- lambda ::- TrueSym0 ~ Apply (Apply (:==$) n) (FromInteger 1) =>- Sing (Case_0123456789 n TrueSym0 :: Quux)- lambda = SQ2- in lambda- SFalse- -> let- lambda ::- FalseSym0 ~ Apply (Apply (:==$) n) (FromInteger 1) =>- Sing (Case_0123456789 n FalseSym0 :: Quux)- lambda = sError (sing :: Sing "toEnum: bad argument")- in lambda } ::- Sing (Case_0123456789 n (Apply (Apply (:==$) n) (FromInteger 1)) :: Quux)- in lambda } ::- Sing (Case_0123456789 n (Apply (Apply (:==$) n) (FromInteger 0)) :: Quux)- in lambda sN- sFromEnum SQ1- = let- lambda ::- t0 ~ Q1Sym0 => Sing (Apply FromEnumSym0 t0 :: GHC.TypeLits.Nat)- lambda = sFromInteger (sing :: Sing 0)- in lambda- sFromEnum SQ2- = let- lambda ::- t0 ~ Q2Sym0 => Sing (Apply FromEnumSym0 t0 :: GHC.TypeLits.Nat)- lambda = sFromInteger (sing :: Sing 1)- in lambda
tests/compile-and-dump/Singletons/EnumDeriving.ghc80.template view
@@ -48,14 +48,14 @@ = forall arg. KindOf (Apply FromEnum_0123456789Sym0 arg) ~ KindOf (FromEnum_0123456789Sym1 arg) => FromEnum_0123456789Sym0KindInference type instance Apply FromEnum_0123456789Sym0 l = FromEnum_0123456789Sym1 l- instance PEnum (KProxy :: KProxy Foo) where+ instance PEnum (Proxy :: Proxy Foo) where type ToEnum (a :: GHC.Types.Nat) = Apply ToEnum_0123456789Sym0 a type FromEnum (a :: Foo) = Apply FromEnum_0123456789Sym0 a data instance Sing (z :: Foo) = z ~ Bar => SBar | z ~ Baz => SBaz | z ~ Bum => SBum type SFoo = (Sing :: Foo -> GHC.Types.Type)- instance SingKind (KProxy :: KProxy Foo) where- type DemoteRep (KProxy :: KProxy Foo) = Foo+ instance SingKind Foo where+ type DemoteRep Foo = Foo fromSing SBar = Bar fromSing SBaz = Baz fromSing SBum = Bum@@ -64,13 +64,13 @@ toSing Bum = SomeSing SBum data instance Sing (z :: Quux) = z ~ Q1 => SQ1 | z ~ Q2 => SQ2 type SQuux = (Sing :: Quux -> GHC.Types.Type)- instance SingKind (KProxy :: KProxy Quux) where- type DemoteRep (KProxy :: KProxy Quux) = Quux+ instance SingKind Quux where+ type DemoteRep Quux = Quux fromSing SQ1 = Q1 fromSing SQ2 = Q2 toSing Q1 = SomeSing SQ1 toSing Q2 = SomeSing SQ2- instance SEnum (KProxy :: KProxy Foo) where+ instance SEnum Foo where sToEnum :: forall (t0 :: GHC.Types.Nat). Sing t0@@ -210,10 +210,10 @@ = forall arg. KindOf (Apply FromEnum_0123456789Sym0 arg) ~ KindOf (FromEnum_0123456789Sym1 arg) => FromEnum_0123456789Sym0KindInference type instance Apply FromEnum_0123456789Sym0 l = FromEnum_0123456789Sym1 l- instance PEnum (KProxy :: KProxy Quux) where+ instance PEnum (Proxy :: Proxy Quux) where type ToEnum (a :: GHC.Types.Nat) = Apply ToEnum_0123456789Sym0 a type FromEnum (a :: Quux) = Apply FromEnum_0123456789Sym0 a- instance SEnum (KProxy :: KProxy Quux) where+ instance SEnum Quux where sToEnum :: forall (t0 :: GHC.Types.Nat). Sing t0
− tests/compile-and-dump/Singletons/EqInstances.ghc710.template
@@ -1,23 +0,0 @@-Singletons/EqInstances.hs:0:0:: Splicing declarations- singEqInstances [''Foo, ''Empty]- ======>- instance SEq (KProxy :: KProxy Foo) where- (%:==) SFLeaf SFLeaf = STrue- (%:==) SFLeaf ((:%+:) _ _) = SFalse- (%:==) ((:%+:) _ _) SFLeaf = SFalse- (%:==) ((:%+:) a a) ((:%+:) b b) = (%:&&) ((%:==) a b) ((%:==) a b)- type family Equals_0123456789 (a :: Foo) (b :: Foo) :: Bool where- Equals_0123456789 FLeaf FLeaf = TrueSym0- Equals_0123456789 ((:+:) a a) ((:+:) b b) = (:&&) ((:==) a b) ((:==) a b)- Equals_0123456789 (a :: Foo) (b :: Foo) = FalseSym0- instance PEq (KProxy :: KProxy Foo) where- type (:==) (a :: Foo) (b :: Foo) = Equals_0123456789 a b- instance SEq (KProxy :: KProxy Empty) where- (%:==) a _- = case a of {- _ -> error "Empty case reached -- this should be impossible" }- type family Equals_0123456789 (a :: Empty)- (b :: Empty) :: Bool where- Equals_0123456789 (a :: Empty) (b :: Empty) = FalseSym0- instance PEq (KProxy :: KProxy Empty) where- type (:==) (a :: Empty) (b :: Empty) = Equals_0123456789 a b
tests/compile-and-dump/Singletons/EqInstances.ghc80.template view
@@ -1,7 +1,7 @@ Singletons/EqInstances.hs:0:0:: Splicing declarations singEqInstances [''Foo, ''Empty] ======>- instance SEq (KProxy :: KProxy Foo) where+ instance SEq Foo where (%:==) SFLeaf SFLeaf = STrue (%:==) SFLeaf ((:%+:) _ _) = SFalse (%:==) ((:%+:) _ _) SFLeaf = SFalse@@ -10,14 +10,14 @@ Equals_0123456789 FLeaf FLeaf = TrueSym0 Equals_0123456789 ((:+:) a a) ((:+:) b b) = (:&&) ((:==) a b) ((:==) a b) Equals_0123456789 (a :: Foo) (b :: Foo) = FalseSym0- instance PEq (KProxy :: KProxy Foo) where+ instance PEq (Proxy :: Proxy Foo) where type (:==) (a :: Foo) (b :: Foo) = Equals_0123456789 a b- instance SEq (KProxy :: KProxy Empty) where+ instance SEq Empty where (%:==) a _ = case a of { _ -> error "Empty case reached -- this should be impossible" } type family Equals_0123456789 (a :: Empty) (b :: Empty) :: Bool where Equals_0123456789 (a :: Empty) (b :: Empty) = FalseSym0- instance PEq (KProxy :: KProxy Empty) where+ instance PEq (Proxy :: Proxy Empty) where type (:==) (a :: Empty) (b :: Empty) = Equals_0123456789 a b
− tests/compile-and-dump/Singletons/Error.ghc710.template
@@ -1,34 +0,0 @@-Singletons/Error.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| head :: [a] -> a- head (a : _) = a- head [] = error "Data.Singletons.List.head: empty list" |]- ======>- head :: forall a. [a] -> a- head (a GHC.Types.: _) = a- head GHC.Types.[] = error "Data.Singletons.List.head: empty list"- type HeadSym1 (t :: [a0123456789]) = Head t- instance SuppressUnusedWarnings HeadSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) HeadSym0KindInference GHC.Tuple.())- data HeadSym0 (l :: TyFun [a0123456789] a0123456789)- = forall arg. KindOf (Apply HeadSym0 arg) ~ KindOf (HeadSym1 arg) =>- HeadSym0KindInference- type instance Apply HeadSym0 l = HeadSym1 l- type family Head (a :: [a]) :: a where- Head ((:) a _z_0123456789) = a- Head '[] = Apply ErrorSym0 "Data.Singletons.List.head: empty list"- sHead :: forall (t :: [a]). Sing t -> Sing (Apply HeadSym0 t :: a)- sHead (SCons sA _s_z_0123456789)- = let- lambda ::- forall a _z_0123456789. t ~ Apply (Apply (:$) a) _z_0123456789 =>- Sing a -> Sing _z_0123456789 -> Sing (Apply HeadSym0 t :: a)- lambda a _z_0123456789 = a- in lambda sA _s_z_0123456789- sHead SNil- = let- lambda :: t ~ '[] => Sing (Apply HeadSym0 t :: a)- lambda- = sError (sing :: Sing "Data.Singletons.List.head: empty list")- in lambda
− tests/compile-and-dump/Singletons/Fixity.ghc710.template
@@ -1,74 +0,0 @@-Singletons/Fixity.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| infix 4 ====- infix 4 <=>- - (====) :: a -> a -> a- a ==== _ = a- - class MyOrd a where- (<=>) :: a -> a -> Ordering- infix 4 <=> |]- ======>- class MyOrd a where- (<=>) :: a -> a -> Ordering- infix 4 <=>- (====) :: forall a. a -> a -> a- (====) a _ = a- infix 4 ====- type (:====$$$) (t :: a0123456789) (t :: a0123456789) = (:====) t t- instance SuppressUnusedWarnings (:====$$) where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) (:====$$###) GHC.Tuple.())- data (:====$$) (l :: a0123456789)- (l :: TyFun a0123456789 a0123456789)- = forall arg. KindOf (Apply ((:====$$) l) arg) ~ KindOf ((:====$$$) l arg) =>- :====$$###- type instance Apply ((:====$$) l) l = (:====$$$) l l- instance SuppressUnusedWarnings (:====$) where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) (:====$###) GHC.Tuple.())- data (:====$) (l :: TyFun a0123456789 (TyFun a0123456789 a0123456789- -> *))- = forall arg. KindOf (Apply (:====$) arg) ~ KindOf ((:====$$) arg) =>- :====$###- type instance Apply (:====$) l = (:====$$) l- type family (:====) (a :: a) (a :: a) :: a where- (:====) a _z_0123456789 = a- infix 4 :====- infix 4 :<=>- type (:<=>$$$) (t :: a0123456789) (t :: a0123456789) = (:<=>) t t- instance SuppressUnusedWarnings (:<=>$$) where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) (:<=>$$###) GHC.Tuple.())- data (:<=>$$) (l :: a0123456789) (l :: TyFun a0123456789 Ordering)- = forall arg. KindOf (Apply ((:<=>$$) l) arg) ~ KindOf ((:<=>$$$) l arg) =>- :<=>$$###- type instance Apply ((:<=>$$) l) l = (:<=>$$$) l l- instance SuppressUnusedWarnings (:<=>$) where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) (:<=>$###) GHC.Tuple.())- data (:<=>$) (l :: TyFun a0123456789 (TyFun a0123456789 Ordering- -> *))- = forall arg. KindOf (Apply (:<=>$) arg) ~ KindOf ((:<=>$$) arg) =>- :<=>$###- type instance Apply (:<=>$) l = (:<=>$$) l- class kproxy ~ KProxy => PMyOrd (kproxy :: KProxy a) where- type family (:<=>) (arg :: a) (arg :: a) :: Ordering- infix 4 %:====- infix 4 %:<=>- (%:====) ::- forall (t :: a) (t :: a).- Sing t -> Sing t -> Sing (Apply (Apply (:====$) t) t :: a)- (%:====) sA _s_z_0123456789- = let- lambda ::- forall a _z_0123456789. (t ~ a, t ~ _z_0123456789) =>- Sing a- -> Sing _z_0123456789 -> Sing (Apply (Apply (:====$) t) t :: a)- lambda a _z_0123456789 = a- in lambda sA _s_z_0123456789- class kproxy ~ KProxy => SMyOrd (kproxy :: KProxy a) where- (%:<=>) ::- forall (t :: a) (t :: a).- Sing t -> Sing t -> Sing (Apply (Apply (:<=>$) t) t :: Ordering)
tests/compile-and-dump/Singletons/Fixity.ghc80.template view
@@ -53,7 +53,7 @@ = forall arg. KindOf (Apply (:<=>$) arg) ~ KindOf ((:<=>$$) arg) => (:<=>$###) type instance Apply (:<=>$) l = (:<=>$$) l- class kproxy ~ KProxy => PMyOrd (kproxy :: KProxy a) where+ class kproxy ~ Proxy => PMyOrd (kproxy :: Proxy a) where type (:<=>) (arg :: a) (arg :: a) :: Ordering infix 4 %:==== infix 4 %:<=>@@ -69,7 +69,7 @@ -> Sing _z_0123456789 -> Sing (Apply (Apply (:====$) t) t :: a) lambda a _z_0123456789 = a in lambda sA _s_z_0123456789- class kproxy ~ KProxy => SMyOrd (kproxy :: KProxy a) where+ class SMyOrd a where (%:<=>) :: forall (t :: a) (t :: a). Sing t -> Sing t -> Sing (Apply (Apply (:<=>$) t) t :: Ordering)
− tests/compile-and-dump/Singletons/FunDeps.ghc710.template
@@ -1,98 +0,0 @@-Singletons/FunDeps.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| t1 = meth True- - class FD a b | a -> b where- meth :: a -> a- l2r :: a -> b- - instance FD Bool Nat where- meth = not- l2r False = 0- l2r True = 1 |]- ======>- class FD a b | a -> b where- meth :: a -> a- l2r :: a -> b- instance FD Bool Nat where- meth = not- l2r False = 0- l2r True = 1- t1 = meth True- type T1Sym0 = T1- type family T1 where- T1 = Apply MethSym0 TrueSym0- type MethSym1 (t :: a0123456789) = Meth t- instance SuppressUnusedWarnings MethSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) MethSym0KindInference GHC.Tuple.())- data MethSym0 (l :: TyFun a0123456789 a0123456789)- = forall arg. KindOf (Apply MethSym0 arg) ~ KindOf (MethSym1 arg) =>- MethSym0KindInference- type instance Apply MethSym0 l = MethSym1 l- type L2rSym1 (t :: a0123456789) = L2r t- instance SuppressUnusedWarnings L2rSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) L2rSym0KindInference GHC.Tuple.())- data L2rSym0 (l :: TyFun a0123456789 b0123456789)- = forall arg. KindOf (Apply L2rSym0 arg) ~ KindOf (L2rSym1 arg) =>- L2rSym0KindInference- type instance Apply L2rSym0 l = L2rSym1 l- class (kproxy ~ KProxy,- kproxy ~ KProxy) => PFD (kproxy :: KProxy a)- (kproxy :: KProxy b) | a -> b where- type family Meth (arg :: a) :: a- type family L2r (arg :: a) :: b- type family Meth_0123456789 (a :: Bool) :: Bool where- Meth_0123456789 a_0123456789 = Apply NotSym0 a_0123456789- type Meth_0123456789Sym1 (t :: Bool) = Meth_0123456789 t- instance SuppressUnusedWarnings Meth_0123456789Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Meth_0123456789Sym0KindInference GHC.Tuple.())- data Meth_0123456789Sym0 (l :: TyFun Bool Bool)- = forall arg. KindOf (Apply Meth_0123456789Sym0 arg) ~ KindOf (Meth_0123456789Sym1 arg) =>- Meth_0123456789Sym0KindInference- type instance Apply Meth_0123456789Sym0 l = Meth_0123456789Sym1 l- type family L2r_0123456789 (a :: Bool) :: Nat where- L2r_0123456789 False = FromInteger 0- L2r_0123456789 True = FromInteger 1- type L2r_0123456789Sym1 (t :: Bool) = L2r_0123456789 t- instance SuppressUnusedWarnings L2r_0123456789Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) L2r_0123456789Sym0KindInference GHC.Tuple.())- data L2r_0123456789Sym0 (l :: TyFun Bool Nat)- = forall arg. KindOf (Apply L2r_0123456789Sym0 arg) ~ KindOf (L2r_0123456789Sym1 arg) =>- L2r_0123456789Sym0KindInference- type instance Apply L2r_0123456789Sym0 l = L2r_0123456789Sym1 l- instance PFD (KProxy :: KProxy Bool) (KProxy :: KProxy Nat) where- type Meth (a :: Bool) = Apply Meth_0123456789Sym0 a- type L2r (a :: Bool) = Apply L2r_0123456789Sym0 a- sT1 :: Sing T1Sym0- sT1 = applySing (singFun1 (Proxy :: Proxy MethSym0) sMeth) STrue- class (kproxy ~ KProxy,- kproxy ~ KProxy) => SFD (kproxy :: KProxy a)- (kproxy :: KProxy b) | a -> b where- sMeth :: forall (t :: a). Sing t -> Sing (Apply MethSym0 t :: a)- sL2r :: forall (t :: a). Sing t -> Sing (Apply L2rSym0 t :: b)- instance SFD (KProxy :: KProxy Bool) (KProxy :: KProxy Nat) where- sMeth ::- forall (t :: Bool). Sing t -> Sing (Apply MethSym0 t :: Bool)- sL2r :: forall (t :: Bool). Sing t -> Sing (Apply L2rSym0 t :: Nat)- sMeth sA_0123456789- = let- lambda ::- forall a_0123456789. t ~ a_0123456789 =>- Sing a_0123456789 -> Sing (Apply MethSym0 t :: Bool)- lambda a_0123456789- = applySing (singFun1 (Proxy :: Proxy NotSym0) sNot) a_0123456789- in lambda sA_0123456789- sL2r SFalse- = let- lambda :: t ~ FalseSym0 => Sing (Apply L2rSym0 t :: Nat)- lambda = sFromInteger (sing :: Sing 0)- in lambda- sL2r STrue- = let- lambda :: t ~ TrueSym0 => Sing (Apply L2rSym0 t :: Nat)- lambda = sFromInteger (sing :: Sing 1)- in lambda
tests/compile-and-dump/Singletons/FunDeps.ghc80.template view
@@ -38,9 +38,8 @@ = forall arg. KindOf (Apply L2rSym0 arg) ~ KindOf (L2rSym1 arg) => L2rSym0KindInference type instance Apply L2rSym0 l = L2rSym1 l- class (kproxy ~ KProxy,- kproxy ~ KProxy) => PFD (kproxy :: KProxy a)- (kproxy :: KProxy b) | a -> b where+ class (kproxy ~ Proxy, kproxy ~ Proxy) => PFD (kproxy :: Proxy a)+ (kproxy :: Proxy b) | a -> b where type Meth (arg :: a) :: a type L2r (arg :: a) :: b type family Meth_0123456789 (a :: Bool) :: Bool where@@ -64,17 +63,15 @@ = forall arg. KindOf (Apply L2r_0123456789Sym0 arg) ~ KindOf (L2r_0123456789Sym1 arg) => L2r_0123456789Sym0KindInference type instance Apply L2r_0123456789Sym0 l = L2r_0123456789Sym1 l- instance PFD (KProxy :: KProxy Bool) (KProxy :: KProxy Nat) where+ instance PFD (Proxy :: Proxy Bool) (Proxy :: Proxy Nat) where type Meth (a :: Bool) = Apply Meth_0123456789Sym0 a type L2r (a :: Bool) = Apply L2r_0123456789Sym0 a sT1 :: Sing T1Sym0 sT1 = applySing (singFun1 (Proxy :: Proxy MethSym0) sMeth) STrue- class (kproxy ~ KProxy,- kproxy ~ KProxy) => SFD (kproxy :: KProxy a)- (kproxy :: KProxy b) | a -> b where+ class SFD a b | a -> b where sMeth :: forall (t :: a). Sing t -> Sing (Apply MethSym0 t :: a) sL2r :: forall (t :: a). Sing t -> Sing (Apply L2rSym0 t :: b)- instance SFD (KProxy :: KProxy Bool) (KProxy :: KProxy Nat) where+ instance SFD Bool Nat where sMeth :: forall (t :: Bool). Sing t -> Sing (Apply MethSym0 t :: Bool) sL2r :: forall (t :: Bool). Sing t -> Sing (Apply L2rSym0 t :: Nat)
− tests/compile-and-dump/Singletons/HigherOrder.ghc710.template
@@ -1,547 +0,0 @@-Singletons/HigherOrder.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| map :: (a -> b) -> [a] -> [b]- map _ [] = []- map f (h : t) = (f h) : (map f t)- liftMaybe :: (a -> b) -> Maybe a -> Maybe b- liftMaybe f (Just x) = Just (f x)- liftMaybe _ Nothing = Nothing- zipWith :: (a -> b -> c) -> [a] -> [b] -> [c]- zipWith f (x : xs) (y : ys) = f x y : zipWith f xs ys- zipWith _ [] [] = []- zipWith _ (_ : _) [] = []- zipWith _ [] (_ : _) = []- foo :: ((a -> b) -> a -> b) -> (a -> b) -> a -> b- foo f g a = f g a- splunge :: [Nat] -> [Bool] -> [Nat]- splunge ns bs- = zipWith (\ n b -> if b then Succ (Succ n) else n) ns bs- etad :: [Nat] -> [Bool] -> [Nat]- etad = zipWith (\ n b -> if b then Succ (Succ n) else n)- - data Either a b = Left a | Right b |]- ======>- data Either a b = Left a | Right b- map :: forall a b. (a -> b) -> [a] -> [b]- map _ GHC.Types.[] = []- map f (h GHC.Types.: t) = ((f h) GHC.Types.: (map f t))- liftMaybe :: forall a b. (a -> b) -> Maybe a -> Maybe b- liftMaybe f (Just x) = Just (f x)- liftMaybe _ Nothing = Nothing- zipWith :: forall a b c. (a -> b -> c) -> [a] -> [b] -> [c]- zipWith f (x GHC.Types.: xs) (y GHC.Types.: ys)- = ((f x y) GHC.Types.: (zipWith f xs ys))- zipWith _ GHC.Types.[] GHC.Types.[] = []- zipWith _ (_ GHC.Types.: _) GHC.Types.[] = []- zipWith _ GHC.Types.[] (_ GHC.Types.: _) = []- foo :: forall a b. ((a -> b) -> a -> b) -> (a -> b) -> a -> b- foo f g a = f g a- splunge :: [Nat] -> [Bool] -> [Nat]- splunge ns bs- = zipWith (\ n b -> if b then Succ (Succ n) else n) ns bs- etad :: [Nat] -> [Bool] -> [Nat]- etad = zipWith (\ n b -> if b then Succ (Succ n) else n)- type LeftSym1 (t :: a0123456789) = Left t- instance SuppressUnusedWarnings LeftSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) LeftSym0KindInference GHC.Tuple.())- data LeftSym0 (l :: TyFun a0123456789 (Either a0123456789 b0123456789))- = forall arg. KindOf (Apply LeftSym0 arg) ~ KindOf (LeftSym1 arg) =>- LeftSym0KindInference- type instance Apply LeftSym0 l = LeftSym1 l- type RightSym1 (t :: b0123456789) = Right t- instance SuppressUnusedWarnings RightSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) RightSym0KindInference GHC.Tuple.())- data RightSym0 (l :: TyFun b0123456789 (Either a0123456789 b0123456789))- = forall arg. KindOf (Apply RightSym0 arg) ~ KindOf (RightSym1 arg) =>- RightSym0KindInference- type instance Apply RightSym0 l = RightSym1 l- type family Case_0123456789 ns bs n b t where- Case_0123456789 ns bs n b True = Apply SuccSym0 (Apply SuccSym0 n)- Case_0123456789 ns bs n b False = n- type family Lambda_0123456789 ns bs t t where- Lambda_0123456789 ns bs n b = Case_0123456789 ns bs n b b- type Lambda_0123456789Sym4 t t t t = Lambda_0123456789 t t t t- instance SuppressUnusedWarnings Lambda_0123456789Sym3 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym3KindInference GHC.Tuple.())- data Lambda_0123456789Sym3 l l l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym3 l l l) arg) ~ KindOf (Lambda_0123456789Sym4 l l l arg) =>- Lambda_0123456789Sym3KindInference- type instance Apply (Lambda_0123456789Sym3 l l l) l = Lambda_0123456789Sym4 l l l l- instance SuppressUnusedWarnings Lambda_0123456789Sym2 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym2KindInference GHC.Tuple.())- data Lambda_0123456789Sym2 l l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym2 l l) arg) ~ KindOf (Lambda_0123456789Sym3 l l arg) =>- Lambda_0123456789Sym2KindInference- type instance Apply (Lambda_0123456789Sym2 l l) l = Lambda_0123456789Sym3 l l l- instance SuppressUnusedWarnings Lambda_0123456789Sym1 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym1KindInference GHC.Tuple.())- data Lambda_0123456789Sym1 l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym1 l) arg) ~ KindOf (Lambda_0123456789Sym2 l arg) =>- Lambda_0123456789Sym1KindInference- type instance Apply (Lambda_0123456789Sym1 l) l = Lambda_0123456789Sym2 l l- instance SuppressUnusedWarnings Lambda_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym0KindInference GHC.Tuple.())- data Lambda_0123456789Sym0 l- = forall arg. KindOf (Apply Lambda_0123456789Sym0 arg) ~ KindOf (Lambda_0123456789Sym1 arg) =>- Lambda_0123456789Sym0KindInference- type instance Apply Lambda_0123456789Sym0 l = Lambda_0123456789Sym1 l- type family Case_0123456789 n b a_0123456789 a_0123456789 t where- Case_0123456789 n b a_0123456789 a_0123456789 True = Apply SuccSym0 (Apply SuccSym0 n)- Case_0123456789 n b a_0123456789 a_0123456789 False = n- type family Lambda_0123456789 a_0123456789 a_0123456789 t t where- Lambda_0123456789 a_0123456789 a_0123456789 n b = Case_0123456789 n b a_0123456789 a_0123456789 b- type Lambda_0123456789Sym4 t t t t = Lambda_0123456789 t t t t- instance SuppressUnusedWarnings Lambda_0123456789Sym3 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym3KindInference GHC.Tuple.())- data Lambda_0123456789Sym3 l l l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym3 l l l) arg) ~ KindOf (Lambda_0123456789Sym4 l l l arg) =>- Lambda_0123456789Sym3KindInference- type instance Apply (Lambda_0123456789Sym3 l l l) l = Lambda_0123456789Sym4 l l l l- instance SuppressUnusedWarnings Lambda_0123456789Sym2 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym2KindInference GHC.Tuple.())- data Lambda_0123456789Sym2 l l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym2 l l) arg) ~ KindOf (Lambda_0123456789Sym3 l l arg) =>- Lambda_0123456789Sym2KindInference- type instance Apply (Lambda_0123456789Sym2 l l) l = Lambda_0123456789Sym3 l l l- instance SuppressUnusedWarnings Lambda_0123456789Sym1 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym1KindInference GHC.Tuple.())- data Lambda_0123456789Sym1 l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym1 l) arg) ~ KindOf (Lambda_0123456789Sym2 l arg) =>- Lambda_0123456789Sym1KindInference- type instance Apply (Lambda_0123456789Sym1 l) l = Lambda_0123456789Sym2 l l- instance SuppressUnusedWarnings Lambda_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym0KindInference GHC.Tuple.())- data Lambda_0123456789Sym0 l- = forall arg. KindOf (Apply Lambda_0123456789Sym0 arg) ~ KindOf (Lambda_0123456789Sym1 arg) =>- Lambda_0123456789Sym0KindInference- type instance Apply Lambda_0123456789Sym0 l = Lambda_0123456789Sym1 l- type FooSym3 (t :: TyFun (TyFun a0123456789 b0123456789- -> *) (TyFun a0123456789 b0123456789 -> *)- -> *)- (t :: TyFun a0123456789 b0123456789 -> *)- (t :: a0123456789) =- Foo t t t- instance SuppressUnusedWarnings FooSym2 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) FooSym2KindInference GHC.Tuple.())- data FooSym2 (l :: TyFun (TyFun a0123456789 b0123456789- -> *) (TyFun a0123456789 b0123456789 -> *)- -> *)- (l :: TyFun a0123456789 b0123456789 -> *)- (l :: TyFun a0123456789 b0123456789)- = forall arg. KindOf (Apply (FooSym2 l l) arg) ~ KindOf (FooSym3 l l arg) =>- FooSym2KindInference- type instance Apply (FooSym2 l l) l = FooSym3 l l l- instance SuppressUnusedWarnings FooSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) FooSym1KindInference GHC.Tuple.())- data FooSym1 (l :: TyFun (TyFun a0123456789 b0123456789- -> *) (TyFun a0123456789 b0123456789 -> *)- -> *)- (l :: TyFun (TyFun a0123456789 b0123456789- -> *) (TyFun a0123456789 b0123456789 -> *))- = forall arg. KindOf (Apply (FooSym1 l) arg) ~ KindOf (FooSym2 l arg) =>- FooSym1KindInference- type instance Apply (FooSym1 l) l = FooSym2 l l- instance SuppressUnusedWarnings FooSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) FooSym0KindInference GHC.Tuple.())- data FooSym0 (l :: TyFun (TyFun (TyFun a0123456789 b0123456789- -> *) (TyFun a0123456789 b0123456789 -> *)- -> *) (TyFun (TyFun a0123456789 b0123456789- -> *) (TyFun a0123456789 b0123456789 -> *)- -> *))- = forall arg. KindOf (Apply FooSym0 arg) ~ KindOf (FooSym1 arg) =>- FooSym0KindInference- type instance Apply FooSym0 l = FooSym1 l- type ZipWithSym3 (t :: TyFun a0123456789 (TyFun b0123456789 c0123456789- -> *)- -> *)- (t :: [a0123456789])- (t :: [b0123456789]) =- ZipWith t t t- instance SuppressUnusedWarnings ZipWithSym2 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) ZipWithSym2KindInference GHC.Tuple.())- data ZipWithSym2 (l :: TyFun a0123456789 (TyFun b0123456789 c0123456789- -> *)- -> *)- (l :: [a0123456789])- (l :: TyFun [b0123456789] [c0123456789])- = forall arg. KindOf (Apply (ZipWithSym2 l l) arg) ~ KindOf (ZipWithSym3 l l arg) =>- ZipWithSym2KindInference- type instance Apply (ZipWithSym2 l l) l = ZipWithSym3 l l l- instance SuppressUnusedWarnings ZipWithSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) ZipWithSym1KindInference GHC.Tuple.())- data ZipWithSym1 (l :: TyFun a0123456789 (TyFun b0123456789 c0123456789- -> *)- -> *)- (l :: TyFun [a0123456789] (TyFun [b0123456789] [c0123456789] -> *))- = forall arg. KindOf (Apply (ZipWithSym1 l) arg) ~ KindOf (ZipWithSym2 l arg) =>- ZipWithSym1KindInference- type instance Apply (ZipWithSym1 l) l = ZipWithSym2 l l- instance SuppressUnusedWarnings ZipWithSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) ZipWithSym0KindInference GHC.Tuple.())- data ZipWithSym0 (l :: TyFun (TyFun a0123456789 (TyFun b0123456789 c0123456789- -> *)- -> *) (TyFun [a0123456789] (TyFun [b0123456789] [c0123456789]- -> *)- -> *))- = forall arg. KindOf (Apply ZipWithSym0 arg) ~ KindOf (ZipWithSym1 arg) =>- ZipWithSym0KindInference- type instance Apply ZipWithSym0 l = ZipWithSym1 l- type SplungeSym2 (t :: [Nat]) (t :: [Bool]) = Splunge t t- instance SuppressUnusedWarnings SplungeSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) SplungeSym1KindInference GHC.Tuple.())- data SplungeSym1 (l :: [Nat]) (l :: TyFun [Bool] [Nat])- = forall arg. KindOf (Apply (SplungeSym1 l) arg) ~ KindOf (SplungeSym2 l arg) =>- SplungeSym1KindInference- type instance Apply (SplungeSym1 l) l = SplungeSym2 l l- instance SuppressUnusedWarnings SplungeSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) SplungeSym0KindInference GHC.Tuple.())- data SplungeSym0 (l :: TyFun [Nat] (TyFun [Bool] [Nat] -> *))- = forall arg. KindOf (Apply SplungeSym0 arg) ~ KindOf (SplungeSym1 arg) =>- SplungeSym0KindInference- type instance Apply SplungeSym0 l = SplungeSym1 l- type EtadSym2 (t :: [Nat]) (t :: [Bool]) = Etad t t- instance SuppressUnusedWarnings EtadSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) EtadSym1KindInference GHC.Tuple.())- data EtadSym1 (l :: [Nat]) (l :: TyFun [Bool] [Nat])- = forall arg. KindOf (Apply (EtadSym1 l) arg) ~ KindOf (EtadSym2 l arg) =>- EtadSym1KindInference- type instance Apply (EtadSym1 l) l = EtadSym2 l l- instance SuppressUnusedWarnings EtadSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) EtadSym0KindInference GHC.Tuple.())- data EtadSym0 (l :: TyFun [Nat] (TyFun [Bool] [Nat] -> *))- = forall arg. KindOf (Apply EtadSym0 arg) ~ KindOf (EtadSym1 arg) =>- EtadSym0KindInference- type instance Apply EtadSym0 l = EtadSym1 l- type LiftMaybeSym2 (t :: TyFun a0123456789 b0123456789 -> *)- (t :: Maybe a0123456789) =- LiftMaybe t t- instance SuppressUnusedWarnings LiftMaybeSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) LiftMaybeSym1KindInference GHC.Tuple.())- data LiftMaybeSym1 (l :: TyFun a0123456789 b0123456789 -> *)- (l :: TyFun (Maybe a0123456789) (Maybe b0123456789))- = forall arg. KindOf (Apply (LiftMaybeSym1 l) arg) ~ KindOf (LiftMaybeSym2 l arg) =>- LiftMaybeSym1KindInference- type instance Apply (LiftMaybeSym1 l) l = LiftMaybeSym2 l l- instance SuppressUnusedWarnings LiftMaybeSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) LiftMaybeSym0KindInference GHC.Tuple.())- data LiftMaybeSym0 (l :: TyFun (TyFun a0123456789 b0123456789- -> *) (TyFun (Maybe a0123456789) (Maybe b0123456789) -> *))- = forall arg. KindOf (Apply LiftMaybeSym0 arg) ~ KindOf (LiftMaybeSym1 arg) =>- LiftMaybeSym0KindInference- type instance Apply LiftMaybeSym0 l = LiftMaybeSym1 l- type MapSym2 (t :: TyFun a0123456789 b0123456789 -> *)- (t :: [a0123456789]) =- Map t t- instance SuppressUnusedWarnings MapSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) MapSym1KindInference GHC.Tuple.())- data MapSym1 (l :: TyFun a0123456789 b0123456789 -> *)- (l :: TyFun [a0123456789] [b0123456789])- = forall arg. KindOf (Apply (MapSym1 l) arg) ~ KindOf (MapSym2 l arg) =>- MapSym1KindInference- type instance Apply (MapSym1 l) l = MapSym2 l l- instance SuppressUnusedWarnings MapSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) MapSym0KindInference GHC.Tuple.())- data MapSym0 (l :: TyFun (TyFun a0123456789 b0123456789- -> *) (TyFun [a0123456789] [b0123456789] -> *))- = forall arg. KindOf (Apply MapSym0 arg) ~ KindOf (MapSym1 arg) =>- MapSym0KindInference- type instance Apply MapSym0 l = MapSym1 l- type family Foo (a :: TyFun (TyFun a b -> *) (TyFun a b -> *) -> *)- (a :: TyFun a b -> *)- (a :: a) :: b where- Foo f g a = Apply (Apply f g) a- type family ZipWith (a :: TyFun a (TyFun b c -> *) -> *)- (a :: [a])- (a :: [b]) :: [c] where- ZipWith f ((:) x xs) ((:) y ys) = Apply (Apply (:$) (Apply (Apply f x) y)) (Apply (Apply (Apply ZipWithSym0 f) xs) ys)- ZipWith _z_0123456789 '[] '[] = '[]- ZipWith _z_0123456789 ((:) _z_0123456789 _z_0123456789) '[] = '[]- ZipWith _z_0123456789 '[] ((:) _z_0123456789 _z_0123456789) = '[]- type family Splunge (a :: [Nat]) (a :: [Bool]) :: [Nat] where- Splunge ns bs = Apply (Apply (Apply ZipWithSym0 (Apply (Apply Lambda_0123456789Sym0 ns) bs)) ns) bs- type family Etad (a :: [Nat]) (a :: [Bool]) :: [Nat] where- Etad a_0123456789 a_0123456789 = Apply (Apply (Apply ZipWithSym0 (Apply (Apply Lambda_0123456789Sym0 a_0123456789) a_0123456789)) a_0123456789) a_0123456789- type family LiftMaybe (a :: TyFun a b -> *)- (a :: Maybe a) :: Maybe b where- LiftMaybe f (Just x) = Apply JustSym0 (Apply f x)- LiftMaybe _z_0123456789 Nothing = NothingSym0- type family Map (a :: TyFun a b -> *) (a :: [a]) :: [b] where- Map _z_0123456789 '[] = '[]- Map f ((:) h t) = Apply (Apply (:$) (Apply f h)) (Apply (Apply MapSym0 f) t)- sFoo ::- forall (t :: TyFun (TyFun a b -> *) (TyFun a b -> *) -> *)- (t :: TyFun a b -> *)- (t :: a).- Sing t- -> Sing t- -> Sing t -> Sing (Apply (Apply (Apply FooSym0 t) t) t :: b)- sZipWith ::- forall (t :: TyFun a (TyFun b c -> *) -> *) (t :: [a]) (t :: [b]).- Sing t- -> Sing t- -> Sing t -> Sing (Apply (Apply (Apply ZipWithSym0 t) t) t :: [c])- sSplunge ::- forall (t :: [Nat]) (t :: [Bool]).- Sing t -> Sing t -> Sing (Apply (Apply SplungeSym0 t) t :: [Nat])- sEtad ::- forall (t :: [Nat]) (t :: [Bool]).- Sing t -> Sing t -> Sing (Apply (Apply EtadSym0 t) t :: [Nat])- sLiftMaybe ::- forall (t :: TyFun a b -> *) (t :: Maybe a).- Sing t- -> Sing t -> Sing (Apply (Apply LiftMaybeSym0 t) t :: Maybe b)- sMap ::- forall (t :: TyFun a b -> *) (t :: [a]).- Sing t -> Sing t -> Sing (Apply (Apply MapSym0 t) t :: [b])- sFoo sF sG sA- = let- lambda ::- forall f g a. (t ~ f, t ~ g, t ~ a) =>- Sing f- -> Sing g- -> Sing a -> Sing (Apply (Apply (Apply FooSym0 t) t) t :: b)- lambda f g a = applySing (applySing f g) a- in lambda sF sG sA- sZipWith sF (SCons sX sXs) (SCons sY sYs)- = let- lambda ::- forall f x xs y ys. (t ~ f,- t ~ Apply (Apply (:$) x) xs,- t ~ Apply (Apply (:$) y) ys) =>- Sing f- -> Sing x- -> Sing xs- -> Sing y- -> Sing ys -> Sing (Apply (Apply (Apply ZipWithSym0 t) t) t :: [c])- lambda f x xs y ys- = applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing (applySing f x) y))- (applySing- (applySing- (applySing (singFun3 (Proxy :: Proxy ZipWithSym0) sZipWith) f) xs)- ys)- in lambda sF sX sXs sY sYs- sZipWith _s_z_0123456789 SNil SNil- = let- lambda ::- forall _z_0123456789. (t ~ _z_0123456789, t ~ '[], t ~ '[]) =>- Sing _z_0123456789- -> Sing (Apply (Apply (Apply ZipWithSym0 t) t) t :: [c])- lambda _z_0123456789 = SNil- in lambda _s_z_0123456789- sZipWith- _s_z_0123456789- (SCons _s_z_0123456789 _s_z_0123456789)- SNil- = let- lambda ::- forall _z_0123456789- _z_0123456789- _z_0123456789. (t ~ _z_0123456789,- t ~ Apply (Apply (:$) _z_0123456789) _z_0123456789,- t ~ '[]) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply (Apply ZipWithSym0 t) t) t :: [c])- lambda _z_0123456789 _z_0123456789 _z_0123456789 = SNil- in lambda _s_z_0123456789 _s_z_0123456789 _s_z_0123456789- sZipWith- _s_z_0123456789- SNil- (SCons _s_z_0123456789 _s_z_0123456789)- = let- lambda ::- forall _z_0123456789- _z_0123456789- _z_0123456789. (t ~ _z_0123456789,- t ~ '[],- t ~ Apply (Apply (:$) _z_0123456789) _z_0123456789) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply (Apply ZipWithSym0 t) t) t :: [c])- lambda _z_0123456789 _z_0123456789 _z_0123456789 = SNil- in lambda _s_z_0123456789 _s_z_0123456789 _s_z_0123456789- sSplunge sNs sBs- = let- lambda ::- forall ns bs. (t ~ ns, t ~ bs) =>- Sing ns -> Sing bs -> Sing (Apply (Apply SplungeSym0 t) t :: [Nat])- lambda ns bs- = applySing- (applySing- (applySing- (singFun3 (Proxy :: Proxy ZipWithSym0) sZipWith)- (singFun2- (Proxy :: Proxy (Apply (Apply Lambda_0123456789Sym0 ns) bs))- (\ sN sB- -> let- lambda ::- forall n b.- Sing n- -> Sing b- -> Sing (Apply (Apply (Apply (Apply Lambda_0123456789Sym0 ns) bs) n) b)- lambda n b- = case b of {- STrue- -> let- lambda ::- TrueSym0 ~ b =>- Sing (Case_0123456789 ns bs n b TrueSym0)- lambda- = applySing- (singFun1 (Proxy :: Proxy SuccSym0) SSucc)- (applySing- (singFun1 (Proxy :: Proxy SuccSym0) SSucc) n)- in lambda- SFalse- -> let- lambda ::- FalseSym0 ~ b =>- Sing (Case_0123456789 ns bs n b FalseSym0)- lambda = n- in lambda } ::- Sing (Case_0123456789 ns bs n b b)- in lambda sN sB)))- ns)- bs- in lambda sNs sBs- sEtad sA_0123456789 sA_0123456789- = let- lambda ::- forall a_0123456789 a_0123456789. (t ~ a_0123456789,- t ~ a_0123456789) =>- Sing a_0123456789- -> Sing a_0123456789 -> Sing (Apply (Apply EtadSym0 t) t :: [Nat])- lambda a_0123456789 a_0123456789- = applySing- (applySing- (applySing- (singFun3 (Proxy :: Proxy ZipWithSym0) sZipWith)- (singFun2- (Proxy ::- Proxy (Apply (Apply Lambda_0123456789Sym0 a_0123456789) a_0123456789))- (\ sN sB- -> let- lambda ::- forall n b.- Sing n- -> Sing b- -> Sing (Apply (Apply (Apply (Apply Lambda_0123456789Sym0 a_0123456789) a_0123456789) n) b)- lambda n b- = case b of {- STrue- -> let- lambda ::- TrueSym0 ~ b =>- Sing (Case_0123456789 n b a_0123456789 a_0123456789 TrueSym0)- lambda- = applySing- (singFun1 (Proxy :: Proxy SuccSym0) SSucc)- (applySing- (singFun1 (Proxy :: Proxy SuccSym0) SSucc) n)- in lambda- SFalse- -> let- lambda ::- FalseSym0 ~ b =>- Sing (Case_0123456789 n b a_0123456789 a_0123456789 FalseSym0)- lambda = n- in lambda } ::- Sing (Case_0123456789 n b a_0123456789 a_0123456789 b)- in lambda sN sB)))- a_0123456789)- a_0123456789- in lambda sA_0123456789 sA_0123456789- sLiftMaybe sF (SJust sX)- = let- lambda ::- forall f x. (t ~ f, t ~ Apply JustSym0 x) =>- Sing f- -> Sing x -> Sing (Apply (Apply LiftMaybeSym0 t) t :: Maybe b)- lambda f x- = applySing- (singFun1 (Proxy :: Proxy JustSym0) SJust) (applySing f x)- in lambda sF sX- sLiftMaybe _s_z_0123456789 SNothing- = let- lambda ::- forall _z_0123456789. (t ~ _z_0123456789, t ~ NothingSym0) =>- Sing _z_0123456789- -> Sing (Apply (Apply LiftMaybeSym0 t) t :: Maybe b)- lambda _z_0123456789 = SNothing- in lambda _s_z_0123456789- sMap _s_z_0123456789 SNil- = let- lambda ::- forall _z_0123456789. (t ~ _z_0123456789, t ~ '[]) =>- Sing _z_0123456789 -> Sing (Apply (Apply MapSym0 t) t :: [b])- lambda _z_0123456789 = SNil- in lambda _s_z_0123456789- sMap sF (SCons sH sT)- = let- lambda ::- forall f h t. (t ~ f, t ~ Apply (Apply (:$) h) t) =>- Sing f- -> Sing h -> Sing t -> Sing (Apply (Apply MapSym0 t) t :: [b])- lambda f h t- = applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) (applySing f h))- (applySing- (applySing (singFun2 (Proxy :: Proxy MapSym0) sMap) f) t)- in lambda sF sH sT- data instance Sing (z :: Either a b)- = forall (n :: a). z ~ Left n => SLeft (Sing (n :: a)) |- forall (n :: b). z ~ Right n => SRight (Sing (n :: b))- type SEither = (Sing :: Either a b -> *)- instance (SingKind (KProxy :: KProxy a),- SingKind (KProxy :: KProxy b)) =>- SingKind (KProxy :: KProxy (Either a b)) where- type DemoteRep (KProxy :: KProxy (Either a b)) = Either (DemoteRep (KProxy :: KProxy a)) (DemoteRep (KProxy :: KProxy b))- fromSing (SLeft b) = Left (fromSing b)- fromSing (SRight b) = Right (fromSing b)- toSing (Left b)- = case toSing b :: SomeSing (KProxy :: KProxy a) of {- SomeSing c -> SomeSing (SLeft c) }- toSing (Right b)- = case toSing b :: SomeSing (KProxy :: KProxy b) of {- SomeSing c -> SomeSing (SRight c) }- instance SingI n => SingI (Left (n :: a)) where- sing = SLeft sing- instance SingI n => SingI (Right (n :: b)) where- sing = SRight sing
tests/compile-and-dump/Singletons/HigherOrder.ghc80.template view
@@ -557,17 +557,15 @@ = forall (n :: a). z ~ Left n => SLeft (Sing (n :: a)) | forall (n :: b). z ~ Right n => SRight (Sing (n :: b)) type SEither = (Sing :: Either a b -> GHC.Types.Type)- instance (SingKind (KProxy :: KProxy a),- SingKind (KProxy :: KProxy b)) =>- SingKind (KProxy :: KProxy (Either a b)) where- type DemoteRep (KProxy :: KProxy (Either a b)) = Either (DemoteRep (KProxy :: KProxy a)) (DemoteRep (KProxy :: KProxy b))+ instance (SingKind a, SingKind b) => SingKind (Either a b) where+ type DemoteRep (Either a b) = Either (DemoteRep a) (DemoteRep b) fromSing (SLeft b) = Left (fromSing b) fromSing (SRight b) = Right (fromSing b) toSing (Left b)- = case toSing b :: SomeSing (KProxy :: KProxy a) of {+ = case toSing b :: SomeSing a of { SomeSing c -> SomeSing (SLeft c) } toSing (Right b)- = case toSing b :: SomeSing (KProxy :: KProxy b) of {+ = case toSing b :: SomeSing b of { SomeSing c -> SomeSing (SRight c) } instance SingI n => SingI (Left (n :: a)) where sing = SLeft sing
− tests/compile-and-dump/Singletons/LambdaCase.ghc710.template
@@ -1,294 +0,0 @@-Singletons/LambdaCase.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| foo1 :: a -> Maybe a -> a- foo1 d x- = (\case {- Just y -> y- Nothing -> d })- x- foo2 :: a -> Maybe a -> a- foo2 d _- = (\case {- Just y -> y- Nothing -> d })- (Just d)- foo3 :: a -> b -> a- foo3 a b = (\case { (p, _) -> p }) (a, b) |]- ======>- foo1 :: forall a. a -> Maybe a -> a- foo1 d x- = \case {- Just y -> y- Nothing -> d }- x- foo2 :: forall a. a -> Maybe a -> a- foo2 d _- = \case {- Just y -> y- Nothing -> d }- (Just d)- foo3 :: forall a b. a -> b -> a- foo3 a b = \case { (p, _) -> p } (a, b)- type family Case_0123456789 a b x_0123456789 t where- Case_0123456789 a b x_0123456789 '(p, _z_0123456789) = p- type family Lambda_0123456789 a b t where- Lambda_0123456789 a b x_0123456789 = Case_0123456789 a b x_0123456789 x_0123456789- type Lambda_0123456789Sym3 t t t = Lambda_0123456789 t t t- instance SuppressUnusedWarnings Lambda_0123456789Sym2 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym2KindInference GHC.Tuple.())- data Lambda_0123456789Sym2 l l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym2 l l) arg) ~ KindOf (Lambda_0123456789Sym3 l l arg) =>- Lambda_0123456789Sym2KindInference- type instance Apply (Lambda_0123456789Sym2 l l) l = Lambda_0123456789Sym3 l l l- instance SuppressUnusedWarnings Lambda_0123456789Sym1 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym1KindInference GHC.Tuple.())- data Lambda_0123456789Sym1 l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym1 l) arg) ~ KindOf (Lambda_0123456789Sym2 l arg) =>- Lambda_0123456789Sym1KindInference- type instance Apply (Lambda_0123456789Sym1 l) l = Lambda_0123456789Sym2 l l- instance SuppressUnusedWarnings Lambda_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym0KindInference GHC.Tuple.())- data Lambda_0123456789Sym0 l- = forall arg. KindOf (Apply Lambda_0123456789Sym0 arg) ~ KindOf (Lambda_0123456789Sym1 arg) =>- Lambda_0123456789Sym0KindInference- type instance Apply Lambda_0123456789Sym0 l = Lambda_0123456789Sym1 l- type family Case_0123456789 d x_0123456789 _z_0123456789 t where- Case_0123456789 d x_0123456789 _z_0123456789 (Just y) = y- Case_0123456789 d x_0123456789 _z_0123456789 Nothing = d- type family Lambda_0123456789 d _z_0123456789 t where- Lambda_0123456789 d _z_0123456789 x_0123456789 = Case_0123456789 d x_0123456789 _z_0123456789 x_0123456789- type Lambda_0123456789Sym3 t t t = Lambda_0123456789 t t t- instance SuppressUnusedWarnings Lambda_0123456789Sym2 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym2KindInference GHC.Tuple.())- data Lambda_0123456789Sym2 l l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym2 l l) arg) ~ KindOf (Lambda_0123456789Sym3 l l arg) =>- Lambda_0123456789Sym2KindInference- type instance Apply (Lambda_0123456789Sym2 l l) l = Lambda_0123456789Sym3 l l l- instance SuppressUnusedWarnings Lambda_0123456789Sym1 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym1KindInference GHC.Tuple.())- data Lambda_0123456789Sym1 l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym1 l) arg) ~ KindOf (Lambda_0123456789Sym2 l arg) =>- Lambda_0123456789Sym1KindInference- type instance Apply (Lambda_0123456789Sym1 l) l = Lambda_0123456789Sym2 l l- instance SuppressUnusedWarnings Lambda_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym0KindInference GHC.Tuple.())- data Lambda_0123456789Sym0 l- = forall arg. KindOf (Apply Lambda_0123456789Sym0 arg) ~ KindOf (Lambda_0123456789Sym1 arg) =>- Lambda_0123456789Sym0KindInference- type instance Apply Lambda_0123456789Sym0 l = Lambda_0123456789Sym1 l- type family Case_0123456789 d x x_0123456789 t where- Case_0123456789 d x x_0123456789 (Just y) = y- Case_0123456789 d x x_0123456789 Nothing = d- type family Lambda_0123456789 d x t where- Lambda_0123456789 d x x_0123456789 = Case_0123456789 d x x_0123456789 x_0123456789- type Lambda_0123456789Sym3 t t t = Lambda_0123456789 t t t- instance SuppressUnusedWarnings Lambda_0123456789Sym2 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym2KindInference GHC.Tuple.())- data Lambda_0123456789Sym2 l l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym2 l l) arg) ~ KindOf (Lambda_0123456789Sym3 l l arg) =>- Lambda_0123456789Sym2KindInference- type instance Apply (Lambda_0123456789Sym2 l l) l = Lambda_0123456789Sym3 l l l- instance SuppressUnusedWarnings Lambda_0123456789Sym1 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym1KindInference GHC.Tuple.())- data Lambda_0123456789Sym1 l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym1 l) arg) ~ KindOf (Lambda_0123456789Sym2 l arg) =>- Lambda_0123456789Sym1KindInference- type instance Apply (Lambda_0123456789Sym1 l) l = Lambda_0123456789Sym2 l l- instance SuppressUnusedWarnings Lambda_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym0KindInference GHC.Tuple.())- data Lambda_0123456789Sym0 l- = forall arg. KindOf (Apply Lambda_0123456789Sym0 arg) ~ KindOf (Lambda_0123456789Sym1 arg) =>- Lambda_0123456789Sym0KindInference- type instance Apply Lambda_0123456789Sym0 l = Lambda_0123456789Sym1 l- type Foo3Sym2 (t :: a0123456789) (t :: b0123456789) = Foo3 t t- instance SuppressUnusedWarnings Foo3Sym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo3Sym1KindInference GHC.Tuple.())- data Foo3Sym1 (l :: a0123456789)- (l :: TyFun b0123456789 a0123456789)- = forall arg. KindOf (Apply (Foo3Sym1 l) arg) ~ KindOf (Foo3Sym2 l arg) =>- Foo3Sym1KindInference- type instance Apply (Foo3Sym1 l) l = Foo3Sym2 l l- instance SuppressUnusedWarnings Foo3Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo3Sym0KindInference GHC.Tuple.())- data Foo3Sym0 (l :: TyFun a0123456789 (TyFun b0123456789 a0123456789- -> *))- = forall arg. KindOf (Apply Foo3Sym0 arg) ~ KindOf (Foo3Sym1 arg) =>- Foo3Sym0KindInference- type instance Apply Foo3Sym0 l = Foo3Sym1 l- type Foo2Sym2 (t :: a0123456789) (t :: Maybe a0123456789) =- Foo2 t t- instance SuppressUnusedWarnings Foo2Sym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo2Sym1KindInference GHC.Tuple.())- data Foo2Sym1 (l :: a0123456789)- (l :: TyFun (Maybe a0123456789) a0123456789)- = forall arg. KindOf (Apply (Foo2Sym1 l) arg) ~ KindOf (Foo2Sym2 l arg) =>- Foo2Sym1KindInference- type instance Apply (Foo2Sym1 l) l = Foo2Sym2 l l- instance SuppressUnusedWarnings Foo2Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo2Sym0KindInference GHC.Tuple.())- data Foo2Sym0 (l :: TyFun a0123456789 (TyFun (Maybe a0123456789) a0123456789- -> *))- = forall arg. KindOf (Apply Foo2Sym0 arg) ~ KindOf (Foo2Sym1 arg) =>- Foo2Sym0KindInference- type instance Apply Foo2Sym0 l = Foo2Sym1 l- type Foo1Sym2 (t :: a0123456789) (t :: Maybe a0123456789) =- Foo1 t t- instance SuppressUnusedWarnings Foo1Sym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo1Sym1KindInference GHC.Tuple.())- data Foo1Sym1 (l :: a0123456789)- (l :: TyFun (Maybe a0123456789) a0123456789)- = forall arg. KindOf (Apply (Foo1Sym1 l) arg) ~ KindOf (Foo1Sym2 l arg) =>- Foo1Sym1KindInference- type instance Apply (Foo1Sym1 l) l = Foo1Sym2 l l- instance SuppressUnusedWarnings Foo1Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo1Sym0KindInference GHC.Tuple.())- data Foo1Sym0 (l :: TyFun a0123456789 (TyFun (Maybe a0123456789) a0123456789- -> *))- = forall arg. KindOf (Apply Foo1Sym0 arg) ~ KindOf (Foo1Sym1 arg) =>- Foo1Sym0KindInference- type instance Apply Foo1Sym0 l = Foo1Sym1 l- type family Foo3 (a :: a) (a :: b) :: a where- Foo3 a b = Apply (Apply (Apply Lambda_0123456789Sym0 a) b) (Apply (Apply Tuple2Sym0 a) b)- type family Foo2 (a :: a) (a :: Maybe a) :: a where- Foo2 d _z_0123456789 = Apply (Apply (Apply Lambda_0123456789Sym0 d) _z_0123456789) (Apply JustSym0 d)- type family Foo1 (a :: a) (a :: Maybe a) :: a where- Foo1 d x = Apply (Apply (Apply Lambda_0123456789Sym0 d) x) x- sFoo3 ::- forall (t :: a) (t :: b).- Sing t -> Sing t -> Sing (Apply (Apply Foo3Sym0 t) t :: a)- sFoo2 ::- forall (t :: a) (t :: Maybe a).- Sing t -> Sing t -> Sing (Apply (Apply Foo2Sym0 t) t :: a)- sFoo1 ::- forall (t :: a) (t :: Maybe a).- Sing t -> Sing t -> Sing (Apply (Apply Foo1Sym0 t) t :: a)- sFoo3 sA sB- = let- lambda ::- forall a b. (t ~ a, t ~ b) =>- Sing a -> Sing b -> Sing (Apply (Apply Foo3Sym0 t) t :: a)- lambda a b- = applySing- (singFun1- (Proxy :: Proxy (Apply (Apply Lambda_0123456789Sym0 a) b))- (\ sX_0123456789- -> let- lambda ::- forall x_0123456789.- Sing x_0123456789- -> Sing (Apply (Apply (Apply Lambda_0123456789Sym0 a) b) x_0123456789)- lambda x_0123456789- = case x_0123456789 of {- STuple2 sP _s_z_0123456789- -> let- lambda ::- forall p- _z_0123456789. Apply (Apply Tuple2Sym0 p) _z_0123456789 ~ x_0123456789 =>- Sing p- -> Sing _z_0123456789- -> Sing (Case_0123456789 a b x_0123456789 (Apply (Apply Tuple2Sym0 p) _z_0123456789))- lambda p _z_0123456789 = p- in lambda sP _s_z_0123456789 } ::- Sing (Case_0123456789 a b x_0123456789 x_0123456789)- in lambda sX_0123456789))- (applySing- (applySing (singFun2 (Proxy :: Proxy Tuple2Sym0) STuple2) a) b)- in lambda sA sB- sFoo2 sD _s_z_0123456789- = let- lambda ::- forall d _z_0123456789. (t ~ d, t ~ _z_0123456789) =>- Sing d- -> Sing _z_0123456789 -> Sing (Apply (Apply Foo2Sym0 t) t :: a)- lambda d _z_0123456789- = applySing- (singFun1- (Proxy ::- Proxy (Apply (Apply Lambda_0123456789Sym0 d) _z_0123456789))- (\ sX_0123456789- -> let- lambda ::- forall x_0123456789.- Sing x_0123456789- -> Sing (Apply (Apply (Apply Lambda_0123456789Sym0 d) _z_0123456789) x_0123456789)- lambda x_0123456789- = case x_0123456789 of {- SJust sY- -> let- lambda ::- forall y. Apply JustSym0 y ~ x_0123456789 =>- Sing y- -> Sing (Case_0123456789 d x_0123456789 _z_0123456789 (Apply JustSym0 y))- lambda y = y- in lambda sY- SNothing- -> let- lambda ::- NothingSym0 ~ x_0123456789 =>- Sing (Case_0123456789 d x_0123456789 _z_0123456789 NothingSym0)- lambda = d- in lambda } ::- Sing (Case_0123456789 d x_0123456789 _z_0123456789 x_0123456789)- in lambda sX_0123456789))- (applySing (singFun1 (Proxy :: Proxy JustSym0) SJust) d)- in lambda sD _s_z_0123456789- sFoo1 sD sX- = let- lambda ::- forall d x. (t ~ d, t ~ x) =>- Sing d -> Sing x -> Sing (Apply (Apply Foo1Sym0 t) t :: a)- lambda d x- = applySing- (singFun1- (Proxy :: Proxy (Apply (Apply Lambda_0123456789Sym0 d) x))- (\ sX_0123456789- -> let- lambda ::- forall x_0123456789.- Sing x_0123456789- -> Sing (Apply (Apply (Apply Lambda_0123456789Sym0 d) x) x_0123456789)- lambda x_0123456789- = case x_0123456789 of {- SJust sY- -> let- lambda ::- forall y. Apply JustSym0 y ~ x_0123456789 =>- Sing y- -> Sing (Case_0123456789 d x x_0123456789 (Apply JustSym0 y))- lambda y = y- in lambda sY- SNothing- -> let- lambda ::- NothingSym0 ~ x_0123456789 =>- Sing (Case_0123456789 d x x_0123456789 NothingSym0)- lambda = d- in lambda } ::- Sing (Case_0123456789 d x x_0123456789 x_0123456789)- in lambda sX_0123456789))- x- in lambda sD sX
− tests/compile-and-dump/Singletons/Lambdas.ghc710.template
@@ -1,836 +0,0 @@-Singletons/Lambdas.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| foo0 :: a -> b -> a- foo0 = (\ x y -> x)- foo1 :: a -> b -> a- foo1 x = (\ _ -> x)- foo2 :: a -> b -> a- foo2 x y = (\ _ -> x) y- foo3 :: a -> a- foo3 x = (\ y -> y) x- foo4 :: a -> b -> c -> a- foo4 x y z = (\ _ _ -> x) y z- foo5 :: a -> b -> b- foo5 x y = (\ x -> x) y- foo6 :: a -> b -> a- foo6 a b = (\ x -> \ _ -> x) a b- foo7 :: a -> b -> b- foo7 x y = (\ (_, b) -> b) (x, y)- foo8 :: Foo a b -> a- foo8 x = (\ (Foo a _) -> a) x- - data Foo a b = Foo a b |]- ======>- foo0 :: forall a b. a -> b -> a- foo0 = \ x y -> x- foo1 :: forall a b. a -> b -> a- foo1 x = \ _ -> x- foo2 :: forall a b. a -> b -> a- foo2 x y = \ _ -> x y- foo3 :: forall a. a -> a- foo3 x = \ y -> y x- foo4 :: forall a b c. a -> b -> c -> a- foo4 x y z = \ _ _ -> x y z- foo5 :: forall a b. a -> b -> b- foo5 x y = \ x -> x y- foo6 :: forall a b. a -> b -> a- foo6 a b = \ x -> \ _ -> x a b- foo7 :: forall a b. a -> b -> b- foo7 x y = \ (_, b) -> b (x, y)- data Foo a b = Foo a b- foo8 :: forall a b. Foo a b -> a- foo8 x = \ (Foo a _) -> a x- type FooSym2 (t :: a0123456789) (t :: b0123456789) = Foo t t- instance SuppressUnusedWarnings FooSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) FooSym1KindInference GHC.Tuple.())- data FooSym1 (l :: a0123456789)- (l :: TyFun b0123456789 (Foo a0123456789 b0123456789))- = forall arg. KindOf (Apply (FooSym1 l) arg) ~ KindOf (FooSym2 l arg) =>- FooSym1KindInference- type instance Apply (FooSym1 l) l = FooSym2 l l- instance SuppressUnusedWarnings FooSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) FooSym0KindInference GHC.Tuple.())- data FooSym0 (l :: TyFun a0123456789 (TyFun b0123456789 (Foo a0123456789 b0123456789)- -> *))- = forall arg. KindOf (Apply FooSym0 arg) ~ KindOf (FooSym1 arg) =>- FooSym0KindInference- type instance Apply FooSym0 l = FooSym1 l- type family Case_0123456789 x arg_0123456789 t where- Case_0123456789 x arg_0123456789 (Foo a _z_0123456789) = a- type family Lambda_0123456789 x t where- Lambda_0123456789 x arg_0123456789 = Case_0123456789 x arg_0123456789 arg_0123456789- type Lambda_0123456789Sym2 t t = Lambda_0123456789 t t- instance SuppressUnusedWarnings Lambda_0123456789Sym1 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym1KindInference GHC.Tuple.())- data Lambda_0123456789Sym1 l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym1 l) arg) ~ KindOf (Lambda_0123456789Sym2 l arg) =>- Lambda_0123456789Sym1KindInference- type instance Apply (Lambda_0123456789Sym1 l) l = Lambda_0123456789Sym2 l l- instance SuppressUnusedWarnings Lambda_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym0KindInference GHC.Tuple.())- data Lambda_0123456789Sym0 l- = forall arg. KindOf (Apply Lambda_0123456789Sym0 arg) ~ KindOf (Lambda_0123456789Sym1 arg) =>- Lambda_0123456789Sym0KindInference- type instance Apply Lambda_0123456789Sym0 l = Lambda_0123456789Sym1 l- type family Case_0123456789 x y arg_0123456789 t where- Case_0123456789 x y arg_0123456789 '(_z_0123456789, b) = b- type family Lambda_0123456789 x y t where- Lambda_0123456789 x y arg_0123456789 = Case_0123456789 x y arg_0123456789 arg_0123456789- type Lambda_0123456789Sym3 t t t = Lambda_0123456789 t t t- instance SuppressUnusedWarnings Lambda_0123456789Sym2 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym2KindInference GHC.Tuple.())- data Lambda_0123456789Sym2 l l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym2 l l) arg) ~ KindOf (Lambda_0123456789Sym3 l l arg) =>- Lambda_0123456789Sym2KindInference- type instance Apply (Lambda_0123456789Sym2 l l) l = Lambda_0123456789Sym3 l l l- instance SuppressUnusedWarnings Lambda_0123456789Sym1 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym1KindInference GHC.Tuple.())- data Lambda_0123456789Sym1 l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym1 l) arg) ~ KindOf (Lambda_0123456789Sym2 l arg) =>- Lambda_0123456789Sym1KindInference- type instance Apply (Lambda_0123456789Sym1 l) l = Lambda_0123456789Sym2 l l- instance SuppressUnusedWarnings Lambda_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym0KindInference GHC.Tuple.())- data Lambda_0123456789Sym0 l- = forall arg. KindOf (Apply Lambda_0123456789Sym0 arg) ~ KindOf (Lambda_0123456789Sym1 arg) =>- Lambda_0123456789Sym0KindInference- type instance Apply Lambda_0123456789Sym0 l = Lambda_0123456789Sym1 l- type family Case_0123456789 a b x arg_0123456789 t where- Case_0123456789 a b x arg_0123456789 _z_0123456789 = x- type family Lambda_0123456789 a b x t where- Lambda_0123456789 a b x arg_0123456789 = Case_0123456789 a b x arg_0123456789 arg_0123456789- type Lambda_0123456789Sym4 t t t t = Lambda_0123456789 t t t t- instance SuppressUnusedWarnings Lambda_0123456789Sym3 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym3KindInference GHC.Tuple.())- data Lambda_0123456789Sym3 l l l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym3 l l l) arg) ~ KindOf (Lambda_0123456789Sym4 l l l arg) =>- Lambda_0123456789Sym3KindInference- type instance Apply (Lambda_0123456789Sym3 l l l) l = Lambda_0123456789Sym4 l l l l- instance SuppressUnusedWarnings Lambda_0123456789Sym2 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym2KindInference GHC.Tuple.())- data Lambda_0123456789Sym2 l l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym2 l l) arg) ~ KindOf (Lambda_0123456789Sym3 l l arg) =>- Lambda_0123456789Sym2KindInference- type instance Apply (Lambda_0123456789Sym2 l l) l = Lambda_0123456789Sym3 l l l- instance SuppressUnusedWarnings Lambda_0123456789Sym1 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym1KindInference GHC.Tuple.())- data Lambda_0123456789Sym1 l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym1 l) arg) ~ KindOf (Lambda_0123456789Sym2 l arg) =>- Lambda_0123456789Sym1KindInference- type instance Apply (Lambda_0123456789Sym1 l) l = Lambda_0123456789Sym2 l l- instance SuppressUnusedWarnings Lambda_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym0KindInference GHC.Tuple.())- data Lambda_0123456789Sym0 l- = forall arg. KindOf (Apply Lambda_0123456789Sym0 arg) ~ KindOf (Lambda_0123456789Sym1 arg) =>- Lambda_0123456789Sym0KindInference- type instance Apply Lambda_0123456789Sym0 l = Lambda_0123456789Sym1 l- type family Lambda_0123456789 a b t where- Lambda_0123456789 a b x = Apply (Apply (Apply Lambda_0123456789Sym0 a) b) x- type Lambda_0123456789Sym3 t t t = Lambda_0123456789 t t t- instance SuppressUnusedWarnings Lambda_0123456789Sym2 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym2KindInference GHC.Tuple.())- data Lambda_0123456789Sym2 l l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym2 l l) arg) ~ KindOf (Lambda_0123456789Sym3 l l arg) =>- Lambda_0123456789Sym2KindInference- type instance Apply (Lambda_0123456789Sym2 l l) l = Lambda_0123456789Sym3 l l l- instance SuppressUnusedWarnings Lambda_0123456789Sym1 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym1KindInference GHC.Tuple.())- data Lambda_0123456789Sym1 l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym1 l) arg) ~ KindOf (Lambda_0123456789Sym2 l arg) =>- Lambda_0123456789Sym1KindInference- type instance Apply (Lambda_0123456789Sym1 l) l = Lambda_0123456789Sym2 l l- instance SuppressUnusedWarnings Lambda_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym0KindInference GHC.Tuple.())- data Lambda_0123456789Sym0 l- = forall arg. KindOf (Apply Lambda_0123456789Sym0 arg) ~ KindOf (Lambda_0123456789Sym1 arg) =>- Lambda_0123456789Sym0KindInference- type instance Apply Lambda_0123456789Sym0 l = Lambda_0123456789Sym1 l- type family Lambda_0123456789 x y t where- Lambda_0123456789 x y x = x- type Lambda_0123456789Sym3 t t t = Lambda_0123456789 t t t- instance SuppressUnusedWarnings Lambda_0123456789Sym2 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym2KindInference GHC.Tuple.())- data Lambda_0123456789Sym2 l l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym2 l l) arg) ~ KindOf (Lambda_0123456789Sym3 l l arg) =>- Lambda_0123456789Sym2KindInference- type instance Apply (Lambda_0123456789Sym2 l l) l = Lambda_0123456789Sym3 l l l- instance SuppressUnusedWarnings Lambda_0123456789Sym1 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym1KindInference GHC.Tuple.())- data Lambda_0123456789Sym1 l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym1 l) arg) ~ KindOf (Lambda_0123456789Sym2 l arg) =>- Lambda_0123456789Sym1KindInference- type instance Apply (Lambda_0123456789Sym1 l) l = Lambda_0123456789Sym2 l l- instance SuppressUnusedWarnings Lambda_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym0KindInference GHC.Tuple.())- data Lambda_0123456789Sym0 l- = forall arg. KindOf (Apply Lambda_0123456789Sym0 arg) ~ KindOf (Lambda_0123456789Sym1 arg) =>- Lambda_0123456789Sym0KindInference- type instance Apply Lambda_0123456789Sym0 l = Lambda_0123456789Sym1 l- type family Case_0123456789 x- y- z- arg_0123456789- arg_0123456789- t where- Case_0123456789 x y z arg_0123456789 arg_0123456789 '(_z_0123456789,- _z_0123456789) = x- type family Lambda_0123456789 x y z t t where- Lambda_0123456789 x y z arg_0123456789 arg_0123456789 = Case_0123456789 x y z arg_0123456789 arg_0123456789 (Apply (Apply Tuple2Sym0 arg_0123456789) arg_0123456789)- type Lambda_0123456789Sym5 t t t t t = Lambda_0123456789 t t t t t- instance SuppressUnusedWarnings Lambda_0123456789Sym4 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym4KindInference GHC.Tuple.())- data Lambda_0123456789Sym4 l l l l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym4 l l l l) arg) ~ KindOf (Lambda_0123456789Sym5 l l l l arg) =>- Lambda_0123456789Sym4KindInference- type instance Apply (Lambda_0123456789Sym4 l l l l) l = Lambda_0123456789Sym5 l l l l l- instance SuppressUnusedWarnings Lambda_0123456789Sym3 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym3KindInference GHC.Tuple.())- data Lambda_0123456789Sym3 l l l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym3 l l l) arg) ~ KindOf (Lambda_0123456789Sym4 l l l arg) =>- Lambda_0123456789Sym3KindInference- type instance Apply (Lambda_0123456789Sym3 l l l) l = Lambda_0123456789Sym4 l l l l- instance SuppressUnusedWarnings Lambda_0123456789Sym2 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym2KindInference GHC.Tuple.())- data Lambda_0123456789Sym2 l l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym2 l l) arg) ~ KindOf (Lambda_0123456789Sym3 l l arg) =>- Lambda_0123456789Sym2KindInference- type instance Apply (Lambda_0123456789Sym2 l l) l = Lambda_0123456789Sym3 l l l- instance SuppressUnusedWarnings Lambda_0123456789Sym1 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym1KindInference GHC.Tuple.())- data Lambda_0123456789Sym1 l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym1 l) arg) ~ KindOf (Lambda_0123456789Sym2 l arg) =>- Lambda_0123456789Sym1KindInference- type instance Apply (Lambda_0123456789Sym1 l) l = Lambda_0123456789Sym2 l l- instance SuppressUnusedWarnings Lambda_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym0KindInference GHC.Tuple.())- data Lambda_0123456789Sym0 l- = forall arg. KindOf (Apply Lambda_0123456789Sym0 arg) ~ KindOf (Lambda_0123456789Sym1 arg) =>- Lambda_0123456789Sym0KindInference- type instance Apply Lambda_0123456789Sym0 l = Lambda_0123456789Sym1 l- type family Lambda_0123456789 x t where- Lambda_0123456789 x y = y- type Lambda_0123456789Sym2 t t = Lambda_0123456789 t t- instance SuppressUnusedWarnings Lambda_0123456789Sym1 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym1KindInference GHC.Tuple.())- data Lambda_0123456789Sym1 l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym1 l) arg) ~ KindOf (Lambda_0123456789Sym2 l arg) =>- Lambda_0123456789Sym1KindInference- type instance Apply (Lambda_0123456789Sym1 l) l = Lambda_0123456789Sym2 l l- instance SuppressUnusedWarnings Lambda_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym0KindInference GHC.Tuple.())- data Lambda_0123456789Sym0 l- = forall arg. KindOf (Apply Lambda_0123456789Sym0 arg) ~ KindOf (Lambda_0123456789Sym1 arg) =>- Lambda_0123456789Sym0KindInference- type instance Apply Lambda_0123456789Sym0 l = Lambda_0123456789Sym1 l- type family Case_0123456789 x y arg_0123456789 t where- Case_0123456789 x y arg_0123456789 _z_0123456789 = x- type family Lambda_0123456789 x y t where- Lambda_0123456789 x y arg_0123456789 = Case_0123456789 x y arg_0123456789 arg_0123456789- type Lambda_0123456789Sym3 t t t = Lambda_0123456789 t t t- instance SuppressUnusedWarnings Lambda_0123456789Sym2 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym2KindInference GHC.Tuple.())- data Lambda_0123456789Sym2 l l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym2 l l) arg) ~ KindOf (Lambda_0123456789Sym3 l l arg) =>- Lambda_0123456789Sym2KindInference- type instance Apply (Lambda_0123456789Sym2 l l) l = Lambda_0123456789Sym3 l l l- instance SuppressUnusedWarnings Lambda_0123456789Sym1 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym1KindInference GHC.Tuple.())- data Lambda_0123456789Sym1 l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym1 l) arg) ~ KindOf (Lambda_0123456789Sym2 l arg) =>- Lambda_0123456789Sym1KindInference- type instance Apply (Lambda_0123456789Sym1 l) l = Lambda_0123456789Sym2 l l- instance SuppressUnusedWarnings Lambda_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym0KindInference GHC.Tuple.())- data Lambda_0123456789Sym0 l- = forall arg. KindOf (Apply Lambda_0123456789Sym0 arg) ~ KindOf (Lambda_0123456789Sym1 arg) =>- Lambda_0123456789Sym0KindInference- type instance Apply Lambda_0123456789Sym0 l = Lambda_0123456789Sym1 l- type family Case_0123456789 x arg_0123456789 a_0123456789 t where- Case_0123456789 x arg_0123456789 a_0123456789 _z_0123456789 = x- type family Lambda_0123456789 x a_0123456789 t where- Lambda_0123456789 x a_0123456789 arg_0123456789 = Case_0123456789 x arg_0123456789 a_0123456789 arg_0123456789- type Lambda_0123456789Sym3 t t t = Lambda_0123456789 t t t- instance SuppressUnusedWarnings Lambda_0123456789Sym2 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym2KindInference GHC.Tuple.())- data Lambda_0123456789Sym2 l l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym2 l l) arg) ~ KindOf (Lambda_0123456789Sym3 l l arg) =>- Lambda_0123456789Sym2KindInference- type instance Apply (Lambda_0123456789Sym2 l l) l = Lambda_0123456789Sym3 l l l- instance SuppressUnusedWarnings Lambda_0123456789Sym1 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym1KindInference GHC.Tuple.())- data Lambda_0123456789Sym1 l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym1 l) arg) ~ KindOf (Lambda_0123456789Sym2 l arg) =>- Lambda_0123456789Sym1KindInference- type instance Apply (Lambda_0123456789Sym1 l) l = Lambda_0123456789Sym2 l l- instance SuppressUnusedWarnings Lambda_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym0KindInference GHC.Tuple.())- data Lambda_0123456789Sym0 l- = forall arg. KindOf (Apply Lambda_0123456789Sym0 arg) ~ KindOf (Lambda_0123456789Sym1 arg) =>- Lambda_0123456789Sym0KindInference- type instance Apply Lambda_0123456789Sym0 l = Lambda_0123456789Sym1 l- type family Lambda_0123456789 a_0123456789 a_0123456789 t t where- Lambda_0123456789 a_0123456789 a_0123456789 x y = x- type Lambda_0123456789Sym4 t t t t = Lambda_0123456789 t t t t- instance SuppressUnusedWarnings Lambda_0123456789Sym3 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym3KindInference GHC.Tuple.())- data Lambda_0123456789Sym3 l l l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym3 l l l) arg) ~ KindOf (Lambda_0123456789Sym4 l l l arg) =>- Lambda_0123456789Sym3KindInference- type instance Apply (Lambda_0123456789Sym3 l l l) l = Lambda_0123456789Sym4 l l l l- instance SuppressUnusedWarnings Lambda_0123456789Sym2 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym2KindInference GHC.Tuple.())- data Lambda_0123456789Sym2 l l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym2 l l) arg) ~ KindOf (Lambda_0123456789Sym3 l l arg) =>- Lambda_0123456789Sym2KindInference- type instance Apply (Lambda_0123456789Sym2 l l) l = Lambda_0123456789Sym3 l l l- instance SuppressUnusedWarnings Lambda_0123456789Sym1 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym1KindInference GHC.Tuple.())- data Lambda_0123456789Sym1 l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym1 l) arg) ~ KindOf (Lambda_0123456789Sym2 l arg) =>- Lambda_0123456789Sym1KindInference- type instance Apply (Lambda_0123456789Sym1 l) l = Lambda_0123456789Sym2 l l- instance SuppressUnusedWarnings Lambda_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym0KindInference GHC.Tuple.())- data Lambda_0123456789Sym0 l- = forall arg. KindOf (Apply Lambda_0123456789Sym0 arg) ~ KindOf (Lambda_0123456789Sym1 arg) =>- Lambda_0123456789Sym0KindInference- type instance Apply Lambda_0123456789Sym0 l = Lambda_0123456789Sym1 l- type Foo8Sym1 (t :: Foo a0123456789 b0123456789) = Foo8 t- instance SuppressUnusedWarnings Foo8Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo8Sym0KindInference GHC.Tuple.())- data Foo8Sym0 (l :: TyFun (Foo a0123456789 b0123456789) a0123456789)- = forall arg. KindOf (Apply Foo8Sym0 arg) ~ KindOf (Foo8Sym1 arg) =>- Foo8Sym0KindInference- type instance Apply Foo8Sym0 l = Foo8Sym1 l- type Foo7Sym2 (t :: a0123456789) (t :: b0123456789) = Foo7 t t- instance SuppressUnusedWarnings Foo7Sym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo7Sym1KindInference GHC.Tuple.())- data Foo7Sym1 (l :: a0123456789)- (l :: TyFun b0123456789 b0123456789)- = forall arg. KindOf (Apply (Foo7Sym1 l) arg) ~ KindOf (Foo7Sym2 l arg) =>- Foo7Sym1KindInference- type instance Apply (Foo7Sym1 l) l = Foo7Sym2 l l- instance SuppressUnusedWarnings Foo7Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo7Sym0KindInference GHC.Tuple.())- data Foo7Sym0 (l :: TyFun a0123456789 (TyFun b0123456789 b0123456789- -> *))- = forall arg. KindOf (Apply Foo7Sym0 arg) ~ KindOf (Foo7Sym1 arg) =>- Foo7Sym0KindInference- type instance Apply Foo7Sym0 l = Foo7Sym1 l- type Foo6Sym2 (t :: a0123456789) (t :: b0123456789) = Foo6 t t- instance SuppressUnusedWarnings Foo6Sym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo6Sym1KindInference GHC.Tuple.())- data Foo6Sym1 (l :: a0123456789)- (l :: TyFun b0123456789 a0123456789)- = forall arg. KindOf (Apply (Foo6Sym1 l) arg) ~ KindOf (Foo6Sym2 l arg) =>- Foo6Sym1KindInference- type instance Apply (Foo6Sym1 l) l = Foo6Sym2 l l- instance SuppressUnusedWarnings Foo6Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo6Sym0KindInference GHC.Tuple.())- data Foo6Sym0 (l :: TyFun a0123456789 (TyFun b0123456789 a0123456789- -> *))- = forall arg. KindOf (Apply Foo6Sym0 arg) ~ KindOf (Foo6Sym1 arg) =>- Foo6Sym0KindInference- type instance Apply Foo6Sym0 l = Foo6Sym1 l- type Foo5Sym2 (t :: a0123456789) (t :: b0123456789) = Foo5 t t- instance SuppressUnusedWarnings Foo5Sym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo5Sym1KindInference GHC.Tuple.())- data Foo5Sym1 (l :: a0123456789)- (l :: TyFun b0123456789 b0123456789)- = forall arg. KindOf (Apply (Foo5Sym1 l) arg) ~ KindOf (Foo5Sym2 l arg) =>- Foo5Sym1KindInference- type instance Apply (Foo5Sym1 l) l = Foo5Sym2 l l- instance SuppressUnusedWarnings Foo5Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo5Sym0KindInference GHC.Tuple.())- data Foo5Sym0 (l :: TyFun a0123456789 (TyFun b0123456789 b0123456789- -> *))- = forall arg. KindOf (Apply Foo5Sym0 arg) ~ KindOf (Foo5Sym1 arg) =>- Foo5Sym0KindInference- type instance Apply Foo5Sym0 l = Foo5Sym1 l- type Foo4Sym3 (t :: a0123456789)- (t :: b0123456789)- (t :: c0123456789) =- Foo4 t t t- instance SuppressUnusedWarnings Foo4Sym2 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo4Sym2KindInference GHC.Tuple.())- data Foo4Sym2 (l :: a0123456789)- (l :: b0123456789)- (l :: TyFun c0123456789 a0123456789)- = forall arg. KindOf (Apply (Foo4Sym2 l l) arg) ~ KindOf (Foo4Sym3 l l arg) =>- Foo4Sym2KindInference- type instance Apply (Foo4Sym2 l l) l = Foo4Sym3 l l l- instance SuppressUnusedWarnings Foo4Sym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo4Sym1KindInference GHC.Tuple.())- data Foo4Sym1 (l :: a0123456789)- (l :: TyFun b0123456789 (TyFun c0123456789 a0123456789 -> *))- = forall arg. KindOf (Apply (Foo4Sym1 l) arg) ~ KindOf (Foo4Sym2 l arg) =>- Foo4Sym1KindInference- type instance Apply (Foo4Sym1 l) l = Foo4Sym2 l l- instance SuppressUnusedWarnings Foo4Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo4Sym0KindInference GHC.Tuple.())- data Foo4Sym0 (l :: TyFun a0123456789 (TyFun b0123456789 (TyFun c0123456789 a0123456789- -> *)- -> *))- = forall arg. KindOf (Apply Foo4Sym0 arg) ~ KindOf (Foo4Sym1 arg) =>- Foo4Sym0KindInference- type instance Apply Foo4Sym0 l = Foo4Sym1 l- type Foo3Sym1 (t :: a0123456789) = Foo3 t- instance SuppressUnusedWarnings Foo3Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo3Sym0KindInference GHC.Tuple.())- data Foo3Sym0 (l :: TyFun a0123456789 a0123456789)- = forall arg. KindOf (Apply Foo3Sym0 arg) ~ KindOf (Foo3Sym1 arg) =>- Foo3Sym0KindInference- type instance Apply Foo3Sym0 l = Foo3Sym1 l- type Foo2Sym2 (t :: a0123456789) (t :: b0123456789) = Foo2 t t- instance SuppressUnusedWarnings Foo2Sym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo2Sym1KindInference GHC.Tuple.())- data Foo2Sym1 (l :: a0123456789)- (l :: TyFun b0123456789 a0123456789)- = forall arg. KindOf (Apply (Foo2Sym1 l) arg) ~ KindOf (Foo2Sym2 l arg) =>- Foo2Sym1KindInference- type instance Apply (Foo2Sym1 l) l = Foo2Sym2 l l- instance SuppressUnusedWarnings Foo2Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo2Sym0KindInference GHC.Tuple.())- data Foo2Sym0 (l :: TyFun a0123456789 (TyFun b0123456789 a0123456789- -> *))- = forall arg. KindOf (Apply Foo2Sym0 arg) ~ KindOf (Foo2Sym1 arg) =>- Foo2Sym0KindInference- type instance Apply Foo2Sym0 l = Foo2Sym1 l- type Foo1Sym2 (t :: a0123456789) (t :: b0123456789) = Foo1 t t- instance SuppressUnusedWarnings Foo1Sym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo1Sym1KindInference GHC.Tuple.())- data Foo1Sym1 (l :: a0123456789)- (l :: TyFun b0123456789 a0123456789)- = forall arg. KindOf (Apply (Foo1Sym1 l) arg) ~ KindOf (Foo1Sym2 l arg) =>- Foo1Sym1KindInference- type instance Apply (Foo1Sym1 l) l = Foo1Sym2 l l- instance SuppressUnusedWarnings Foo1Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo1Sym0KindInference GHC.Tuple.())- data Foo1Sym0 (l :: TyFun a0123456789 (TyFun b0123456789 a0123456789- -> *))- = forall arg. KindOf (Apply Foo1Sym0 arg) ~ KindOf (Foo1Sym1 arg) =>- Foo1Sym0KindInference- type instance Apply Foo1Sym0 l = Foo1Sym1 l- type Foo0Sym2 (t :: a0123456789) (t :: b0123456789) = Foo0 t t- instance SuppressUnusedWarnings Foo0Sym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo0Sym1KindInference GHC.Tuple.())- data Foo0Sym1 (l :: a0123456789)- (l :: TyFun b0123456789 a0123456789)- = forall arg. KindOf (Apply (Foo0Sym1 l) arg) ~ KindOf (Foo0Sym2 l arg) =>- Foo0Sym1KindInference- type instance Apply (Foo0Sym1 l) l = Foo0Sym2 l l- instance SuppressUnusedWarnings Foo0Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo0Sym0KindInference GHC.Tuple.())- data Foo0Sym0 (l :: TyFun a0123456789 (TyFun b0123456789 a0123456789- -> *))- = forall arg. KindOf (Apply Foo0Sym0 arg) ~ KindOf (Foo0Sym1 arg) =>- Foo0Sym0KindInference- type instance Apply Foo0Sym0 l = Foo0Sym1 l- type family Foo8 (a :: Foo a b) :: a where- Foo8 x = Apply (Apply Lambda_0123456789Sym0 x) x- type family Foo7 (a :: a) (a :: b) :: b where- Foo7 x y = Apply (Apply (Apply Lambda_0123456789Sym0 x) y) (Apply (Apply Tuple2Sym0 x) y)- type family Foo6 (a :: a) (a :: b) :: a where- Foo6 a b = Apply (Apply (Apply (Apply Lambda_0123456789Sym0 a) b) a) b- type family Foo5 (a :: a) (a :: b) :: b where- Foo5 x y = Apply (Apply (Apply Lambda_0123456789Sym0 x) y) y- type family Foo4 (a :: a) (a :: b) (a :: c) :: a where- Foo4 x y z = Apply (Apply (Apply (Apply (Apply Lambda_0123456789Sym0 x) y) z) y) z- type family Foo3 (a :: a) :: a where- Foo3 x = Apply (Apply Lambda_0123456789Sym0 x) x- type family Foo2 (a :: a) (a :: b) :: a where- Foo2 x y = Apply (Apply (Apply Lambda_0123456789Sym0 x) y) y- type family Foo1 (a :: a) (a :: b) :: a where- Foo1 x a_0123456789 = Apply (Apply (Apply Lambda_0123456789Sym0 x) a_0123456789) a_0123456789- type family Foo0 (a :: a) (a :: b) :: a where- Foo0 a_0123456789 a_0123456789 = Apply (Apply (Apply (Apply Lambda_0123456789Sym0 a_0123456789) a_0123456789) a_0123456789) a_0123456789- sFoo8 ::- forall (t :: Foo a b). Sing t -> Sing (Apply Foo8Sym0 t :: a)- sFoo7 ::- forall (t :: a) (t :: b).- Sing t -> Sing t -> Sing (Apply (Apply Foo7Sym0 t) t :: b)- sFoo6 ::- forall (t :: a) (t :: b).- Sing t -> Sing t -> Sing (Apply (Apply Foo6Sym0 t) t :: a)- sFoo5 ::- forall (t :: a) (t :: b).- Sing t -> Sing t -> Sing (Apply (Apply Foo5Sym0 t) t :: b)- sFoo4 ::- forall (t :: a) (t :: b) (t :: c).- Sing t- -> Sing t- -> Sing t -> Sing (Apply (Apply (Apply Foo4Sym0 t) t) t :: a)- sFoo3 :: forall (t :: a). Sing t -> Sing (Apply Foo3Sym0 t :: a)- sFoo2 ::- forall (t :: a) (t :: b).- Sing t -> Sing t -> Sing (Apply (Apply Foo2Sym0 t) t :: a)- sFoo1 ::- forall (t :: a) (t :: b).- Sing t -> Sing t -> Sing (Apply (Apply Foo1Sym0 t) t :: a)- sFoo0 ::- forall (t :: a) (t :: b).- Sing t -> Sing t -> Sing (Apply (Apply Foo0Sym0 t) t :: a)- sFoo8 sX- = let- lambda :: forall x. t ~ x => Sing x -> Sing (Apply Foo8Sym0 t :: a)- lambda x- = applySing- (singFun1- (Proxy :: Proxy (Apply Lambda_0123456789Sym0 x))- (\ sArg_0123456789- -> let- lambda ::- forall arg_0123456789.- Sing arg_0123456789- -> Sing (Apply (Apply Lambda_0123456789Sym0 x) arg_0123456789)- lambda arg_0123456789- = case arg_0123456789 of {- SFoo sA _s_z_0123456789- -> let- lambda ::- forall a- _z_0123456789. Apply (Apply FooSym0 a) _z_0123456789 ~ arg_0123456789 =>- Sing a- -> Sing _z_0123456789- -> Sing (Case_0123456789 x arg_0123456789 (Apply (Apply FooSym0 a) _z_0123456789))- lambda a _z_0123456789 = a- in lambda sA _s_z_0123456789 } ::- Sing (Case_0123456789 x arg_0123456789 arg_0123456789)- in lambda sArg_0123456789))- x- in lambda sX- sFoo7 sX sY- = let- lambda ::- forall x y. (t ~ x, t ~ y) =>- Sing x -> Sing y -> Sing (Apply (Apply Foo7Sym0 t) t :: b)- lambda x y- = applySing- (singFun1- (Proxy :: Proxy (Apply (Apply Lambda_0123456789Sym0 x) y))- (\ sArg_0123456789- -> let- lambda ::- forall arg_0123456789.- Sing arg_0123456789- -> Sing (Apply (Apply (Apply Lambda_0123456789Sym0 x) y) arg_0123456789)- lambda arg_0123456789- = case arg_0123456789 of {- STuple2 _s_z_0123456789 sB- -> let- lambda ::- forall _z_0123456789- b. Apply (Apply Tuple2Sym0 _z_0123456789) b ~ arg_0123456789 =>- Sing _z_0123456789- -> Sing b- -> Sing (Case_0123456789 x y arg_0123456789 (Apply (Apply Tuple2Sym0 _z_0123456789) b))- lambda _z_0123456789 b = b- in lambda _s_z_0123456789 sB } ::- Sing (Case_0123456789 x y arg_0123456789 arg_0123456789)- in lambda sArg_0123456789))- (applySing- (applySing (singFun2 (Proxy :: Proxy Tuple2Sym0) STuple2) x) y)- in lambda sX sY- sFoo6 sA sB- = let- lambda ::- forall a b. (t ~ a, t ~ b) =>- Sing a -> Sing b -> Sing (Apply (Apply Foo6Sym0 t) t :: a)- lambda a b- = applySing- (applySing- (singFun1- (Proxy :: Proxy (Apply (Apply Lambda_0123456789Sym0 a) b))- (\ sX- -> let- lambda ::- forall x.- Sing x -> Sing (Apply (Apply (Apply Lambda_0123456789Sym0 a) b) x)- lambda x- = singFun1- (Proxy ::- Proxy (Apply (Apply (Apply Lambda_0123456789Sym0 a) b) x))- (\ sArg_0123456789- -> let- lambda ::- forall arg_0123456789.- Sing arg_0123456789- -> Sing (Apply (Apply (Apply (Apply Lambda_0123456789Sym0 a) b) x) arg_0123456789)- lambda arg_0123456789- = case arg_0123456789 of {- _s_z_0123456789- -> let- lambda ::- forall _z_0123456789. _z_0123456789 ~ arg_0123456789 =>- Sing _z_0123456789- -> Sing (Case_0123456789 a b x arg_0123456789 _z_0123456789)- lambda _z_0123456789 = x- in lambda _s_z_0123456789 } ::- Sing (Case_0123456789 a b x arg_0123456789 arg_0123456789)- in lambda sArg_0123456789)- in lambda sX))- a)- b- in lambda sA sB- sFoo5 sX sY- = let- lambda ::- forall x y. (t ~ x, t ~ y) =>- Sing x -> Sing y -> Sing (Apply (Apply Foo5Sym0 t) t :: b)- lambda x y- = applySing- (singFun1- (Proxy :: Proxy (Apply (Apply Lambda_0123456789Sym0 x) y))- (\ sX- -> let- lambda ::- forall x.- Sing x -> Sing (Apply (Apply (Apply Lambda_0123456789Sym0 x) y) x)- lambda x = x- in lambda sX))- y- in lambda sX sY- sFoo4 sX sY sZ- = let- lambda ::- forall x y z. (t ~ x, t ~ y, t ~ z) =>- Sing x- -> Sing y- -> Sing z -> Sing (Apply (Apply (Apply Foo4Sym0 t) t) t :: a)- lambda x y z- = applySing- (applySing- (singFun2- (Proxy ::- Proxy (Apply (Apply (Apply Lambda_0123456789Sym0 x) y) z))- (\ sArg_0123456789 sArg_0123456789- -> let- lambda ::- forall arg_0123456789 arg_0123456789.- Sing arg_0123456789- -> Sing arg_0123456789- -> Sing (Apply (Apply (Apply (Apply (Apply Lambda_0123456789Sym0 x) y) z) arg_0123456789) arg_0123456789)- lambda arg_0123456789 arg_0123456789- = case- applySing- (applySing- (singFun2 (Proxy :: Proxy Tuple2Sym0) STuple2)- arg_0123456789)- arg_0123456789- of {- STuple2 _s_z_0123456789 _s_z_0123456789- -> let- lambda ::- forall _z_0123456789- _z_0123456789. Apply (Apply Tuple2Sym0 _z_0123456789) _z_0123456789 ~ Apply (Apply Tuple2Sym0 arg_0123456789) arg_0123456789 =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Case_0123456789 x y z arg_0123456789 arg_0123456789 (Apply (Apply Tuple2Sym0 _z_0123456789) _z_0123456789))- lambda _z_0123456789 _z_0123456789 = x- in lambda _s_z_0123456789 _s_z_0123456789 } ::- Sing (Case_0123456789 x y z arg_0123456789 arg_0123456789 (Apply (Apply Tuple2Sym0 arg_0123456789) arg_0123456789))- in lambda sArg_0123456789 sArg_0123456789))- y)- z- in lambda sX sY sZ- sFoo3 sX- = let- lambda :: forall x. t ~ x => Sing x -> Sing (Apply Foo3Sym0 t :: a)- lambda x- = applySing- (singFun1- (Proxy :: Proxy (Apply Lambda_0123456789Sym0 x))- (\ sY- -> let- lambda ::- forall y. Sing y -> Sing (Apply (Apply Lambda_0123456789Sym0 x) y)- lambda y = y- in lambda sY))- x- in lambda sX- sFoo2 sX sY- = let- lambda ::- forall x y. (t ~ x, t ~ y) =>- Sing x -> Sing y -> Sing (Apply (Apply Foo2Sym0 t) t :: a)- lambda x y- = applySing- (singFun1- (Proxy :: Proxy (Apply (Apply Lambda_0123456789Sym0 x) y))- (\ sArg_0123456789- -> let- lambda ::- forall arg_0123456789.- Sing arg_0123456789- -> Sing (Apply (Apply (Apply Lambda_0123456789Sym0 x) y) arg_0123456789)- lambda arg_0123456789- = case arg_0123456789 of {- _s_z_0123456789- -> let- lambda ::- forall _z_0123456789. _z_0123456789 ~ arg_0123456789 =>- Sing _z_0123456789- -> Sing (Case_0123456789 x y arg_0123456789 _z_0123456789)- lambda _z_0123456789 = x- in lambda _s_z_0123456789 } ::- Sing (Case_0123456789 x y arg_0123456789 arg_0123456789)- in lambda sArg_0123456789))- y- in lambda sX sY- sFoo1 sX sA_0123456789- = let- lambda ::- forall x a_0123456789. (t ~ x, t ~ a_0123456789) =>- Sing x- -> Sing a_0123456789 -> Sing (Apply (Apply Foo1Sym0 t) t :: a)- lambda x a_0123456789- = applySing- (singFun1- (Proxy ::- Proxy (Apply (Apply Lambda_0123456789Sym0 x) a_0123456789))- (\ sArg_0123456789- -> let- lambda ::- forall arg_0123456789.- Sing arg_0123456789- -> Sing (Apply (Apply (Apply Lambda_0123456789Sym0 x) a_0123456789) arg_0123456789)- lambda arg_0123456789- = case arg_0123456789 of {- _s_z_0123456789- -> let- lambda ::- forall _z_0123456789. _z_0123456789 ~ arg_0123456789 =>- Sing _z_0123456789- -> Sing (Case_0123456789 x arg_0123456789 a_0123456789 _z_0123456789)- lambda _z_0123456789 = x- in lambda _s_z_0123456789 } ::- Sing (Case_0123456789 x arg_0123456789 a_0123456789 arg_0123456789)- in lambda sArg_0123456789))- a_0123456789- in lambda sX sA_0123456789- sFoo0 sA_0123456789 sA_0123456789- = let- lambda ::- forall a_0123456789 a_0123456789. (t ~ a_0123456789,- t ~ a_0123456789) =>- Sing a_0123456789- -> Sing a_0123456789 -> Sing (Apply (Apply Foo0Sym0 t) t :: a)- lambda a_0123456789 a_0123456789- = applySing- (applySing- (singFun2- (Proxy ::- Proxy (Apply (Apply Lambda_0123456789Sym0 a_0123456789) a_0123456789))- (\ sX sY- -> let- lambda ::- forall x y.- Sing x- -> Sing y- -> Sing (Apply (Apply (Apply (Apply Lambda_0123456789Sym0 a_0123456789) a_0123456789) x) y)- lambda x y = x- in lambda sX sY))- a_0123456789)- a_0123456789- in lambda sA_0123456789 sA_0123456789- data instance Sing (z :: Foo a b)- = forall (n :: a) (n :: b). z ~ Foo n n =>- SFoo (Sing (n :: a)) (Sing (n :: b))- type SFoo = (Sing :: Foo a b -> *)- instance (SingKind (KProxy :: KProxy a),- SingKind (KProxy :: KProxy b)) =>- SingKind (KProxy :: KProxy (Foo a b)) where- type DemoteRep (KProxy :: KProxy (Foo a b)) = Foo (DemoteRep (KProxy :: KProxy a)) (DemoteRep (KProxy :: KProxy b))- fromSing (SFoo b b) = Foo (fromSing b) (fromSing b)- toSing (Foo b b)- = case- GHC.Tuple.(,)- (toSing b :: SomeSing (KProxy :: KProxy a))- (toSing b :: SomeSing (KProxy :: KProxy b))- of {- GHC.Tuple.(,) (SomeSing c) (SomeSing c) -> SomeSing (SFoo c c) }- instance (SingI n, SingI n) => SingI (Foo (n :: a) (n :: b)) where- sing = SFoo sing sing
tests/compile-and-dump/Singletons/Lambdas.ghc80.template view
@@ -830,16 +830,12 @@ = forall (n :: a) (n :: b). z ~ Foo n n => SFoo (Sing (n :: a)) (Sing (n :: b)) type SFoo = (Sing :: Foo a b -> GHC.Types.Type)- instance (SingKind (KProxy :: KProxy a),- SingKind (KProxy :: KProxy b)) =>- SingKind (KProxy :: KProxy (Foo a b)) where- type DemoteRep (KProxy :: KProxy (Foo a b)) = Foo (DemoteRep (KProxy :: KProxy a)) (DemoteRep (KProxy :: KProxy b))+ instance (SingKind a, SingKind b) => SingKind (Foo a b) where+ type DemoteRep (Foo a b) = Foo (DemoteRep a) (DemoteRep b) fromSing (SFoo b b) = Foo (fromSing b) (fromSing b) toSing (Foo b b) = case- GHC.Tuple.(,)- (toSing b :: SomeSing (KProxy :: KProxy a))- (toSing b :: SomeSing (KProxy :: KProxy b))+ GHC.Tuple.(,) (toSing b :: SomeSing a) (toSing b :: SomeSing b) of { GHC.Tuple.(,) (SomeSing c) (SomeSing c) -> SomeSing (SFoo c c) } instance (SingI n, SingI n) => SingI (Foo (n :: a) (n :: b)) where
− tests/compile-and-dump/Singletons/LambdasComprehensive.ghc710.template
@@ -1,81 +0,0 @@-Singletons/LambdasComprehensive.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| foo :: [Nat]- foo- = map (\ x -> either_ pred Succ x) [Left Zero, Right (Succ Zero)]- bar :: [Nat]- bar = map (either_ pred Succ) [Left Zero, Right (Succ Zero)] |]- ======>- foo :: [Nat]- foo- = map (\ x -> either_ pred Succ x) [Left Zero, Right (Succ Zero)]- bar :: [Nat]- bar = map (either_ pred Succ) [Left Zero, Right (Succ Zero)]- type family Lambda_0123456789 t where- Lambda_0123456789 x = Apply (Apply (Apply Either_Sym0 PredSym0) SuccSym0) x- type Lambda_0123456789Sym1 t = Lambda_0123456789 t- instance SuppressUnusedWarnings Lambda_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym0KindInference GHC.Tuple.())- data Lambda_0123456789Sym0 l- = forall arg. KindOf (Apply Lambda_0123456789Sym0 arg) ~ KindOf (Lambda_0123456789Sym1 arg) =>- Lambda_0123456789Sym0KindInference- type instance Apply Lambda_0123456789Sym0 l = Lambda_0123456789Sym1 l- type BarSym0 = Bar- type FooSym0 = Foo- type family Bar :: [Nat] where- Bar = Apply (Apply MapSym0 (Apply (Apply Either_Sym0 PredSym0) SuccSym0)) (Apply (Apply (:$) (Apply LeftSym0 ZeroSym0)) (Apply (Apply (:$) (Apply RightSym0 (Apply SuccSym0 ZeroSym0))) '[]))- type family Foo :: [Nat] where- Foo = Apply (Apply MapSym0 Lambda_0123456789Sym0) (Apply (Apply (:$) (Apply LeftSym0 ZeroSym0)) (Apply (Apply (:$) (Apply RightSym0 (Apply SuccSym0 ZeroSym0))) '[]))- sBar :: Sing (BarSym0 :: [Nat])- sFoo :: Sing (FooSym0 :: [Nat])- sBar- = applySing- (applySing- (singFun2 (Proxy :: Proxy MapSym0) sMap)- (applySing- (applySing- (singFun3 (Proxy :: Proxy Either_Sym0) sEither_)- (singFun1 (Proxy :: Proxy PredSym0) sPred))- (singFun1 (Proxy :: Proxy SuccSym0) SSucc)))- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing (singFun1 (Proxy :: Proxy LeftSym0) SLeft) SZero))- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (singFun1 (Proxy :: Proxy RightSym0) SRight)- (applySing (singFun1 (Proxy :: Proxy SuccSym0) SSucc) SZero)))- SNil))- sFoo- = applySing- (applySing- (singFun2 (Proxy :: Proxy MapSym0) sMap)- (singFun1- (Proxy :: Proxy Lambda_0123456789Sym0)- (\ sX- -> let- lambda :: forall x. Sing x -> Sing (Apply Lambda_0123456789Sym0 x)- lambda x- = applySing- (applySing- (applySing- (singFun3 (Proxy :: Proxy Either_Sym0) sEither_)- (singFun1 (Proxy :: Proxy PredSym0) sPred))- (singFun1 (Proxy :: Proxy SuccSym0) SSucc))- x- in lambda sX)))- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing (singFun1 (Proxy :: Proxy LeftSym0) SLeft) SZero))- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (singFun1 (Proxy :: Proxy RightSym0) SRight)- (applySing (singFun1 (Proxy :: Proxy SuccSym0) SSucc) SZero)))- SNil))
− tests/compile-and-dump/Singletons/LetStatements.ghc710.template
@@ -1,1022 +0,0 @@-Singletons/LetStatements.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| foo1 :: Nat -> Nat- foo1 x- = let- y :: Nat- y = Succ Zero- in y- foo2 :: Nat- foo2- = let- y = Succ Zero- z = Succ y- in z- foo3 :: Nat -> Nat- foo3 x- = let- y :: Nat- y = Succ x- in y- foo4 :: Nat -> Nat- foo4 x- = let- f :: Nat -> Nat- f y = Succ y- in f x- foo5 :: Nat -> Nat- foo5 x- = let- f :: Nat -> Nat- f y- = let- z :: Nat- z = Succ y- in Succ z- in f x- foo6 :: Nat -> Nat- foo6 x- = let- f :: Nat -> Nat- f y = Succ y in- let- z :: Nat- z = f x- in z- foo7 :: Nat -> Nat- foo7 x- = let- x :: Nat- x = Zero- in x- foo8 :: Nat -> Nat- foo8 x- = let- z :: Nat- z = (\ x -> x) Zero- in z- foo9 :: Nat -> Nat- foo9 x- = let- z :: Nat -> Nat- z = (\ x -> x)- in z x- foo10 :: Nat -> Nat- foo10 x- = let- (+) :: Nat -> Nat -> Nat- Zero + m = m- (Succ n) + m = Succ (n + m)- in (Succ Zero) + x- foo11 :: Nat -> Nat- foo11 x- = let- (+) :: Nat -> Nat -> Nat- Zero + m = m- (Succ n) + m = Succ (n + m)- z :: Nat- z = x- in (Succ Zero) + z- foo12 :: Nat -> Nat- foo12 x- = let- (+) :: Nat -> Nat -> Nat- Zero + m = m- (Succ n) + m = Succ (n + x)- in x + (Succ (Succ Zero))- foo13 :: forall a. a -> a- foo13 x- = let- bar :: a- bar = x- in foo13_ bar- foo13_ :: a -> a- foo13_ y = y- foo14 :: Nat -> (Nat, Nat)- foo14 x = let (y, z) = (Succ x, x) in (z, y) |]- ======>- foo1 :: Nat -> Nat- foo1 x- = let- y :: Nat- y = Succ Zero- in y- foo2 :: Nat- foo2- = let- y = Succ Zero- z = Succ y- in z- foo3 :: Nat -> Nat- foo3 x- = let- y :: Nat- y = Succ x- in y- foo4 :: Nat -> Nat- foo4 x- = let- f :: Nat -> Nat- f y = Succ y- in f x- foo5 :: Nat -> Nat- foo5 x- = let- f :: Nat -> Nat- f y- = let- z :: Nat- z = Succ y- in Succ z- in f x- foo6 :: Nat -> Nat- foo6 x- = let- f :: Nat -> Nat- f y = Succ y in- let- z :: Nat- z = f x- in z- foo7 :: Nat -> Nat- foo7 x- = let- x :: Nat- x = Zero- in x- foo8 :: Nat -> Nat- foo8 x- = let- z :: Nat- z = \ x -> x Zero- in z- foo9 :: Nat -> Nat- foo9 x- = let- z :: Nat -> Nat- z = \ x -> x- in z x- foo10 :: Nat -> Nat- foo10 x- = let- (+) :: Nat -> Nat -> Nat- (+) Zero m = m- (+) (Succ n) m = Succ (n + m)- in ((Succ Zero) + x)- foo11 :: Nat -> Nat- foo11 x- = let- (+) :: Nat -> Nat -> Nat- z :: Nat- (+) Zero m = m- (+) (Succ n) m = Succ (n + m)- z = x- in ((Succ Zero) + z)- foo12 :: Nat -> Nat- foo12 x- = let- (+) :: Nat -> Nat -> Nat- (+) Zero m = m- (+) (Succ n) m = Succ (n + x)- in (x + (Succ (Succ Zero)))- foo13 :: forall a. a -> a- foo13 x- = let- bar :: a- bar = x- in foo13_ bar- foo13_ :: forall a. a -> a- foo13_ y = y- foo14 :: Nat -> (Nat, Nat)- foo14 x = let (y, z) = (Succ x, x) in (z, y)- type family Case_0123456789 x t where- Case_0123456789 x '(y_0123456789, _z_0123456789) = y_0123456789- type family Case_0123456789 x t where- Case_0123456789 x '(_z_0123456789, y_0123456789) = y_0123456789- type Let0123456789YSym1 t = Let0123456789Y t- instance SuppressUnusedWarnings Let0123456789YSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Let0123456789YSym0KindInference GHC.Tuple.())- data Let0123456789YSym0 l- = forall arg. KindOf (Apply Let0123456789YSym0 arg) ~ KindOf (Let0123456789YSym1 arg) =>- Let0123456789YSym0KindInference- type instance Apply Let0123456789YSym0 l = Let0123456789YSym1 l- type Let0123456789ZSym1 t = Let0123456789Z t- instance SuppressUnusedWarnings Let0123456789ZSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Let0123456789ZSym0KindInference GHC.Tuple.())- data Let0123456789ZSym0 l- = forall arg. KindOf (Apply Let0123456789ZSym0 arg) ~ KindOf (Let0123456789ZSym1 arg) =>- Let0123456789ZSym0KindInference- type instance Apply Let0123456789ZSym0 l = Let0123456789ZSym1 l- type Let0123456789X_0123456789Sym1 t = Let0123456789X_0123456789 t- instance SuppressUnusedWarnings Let0123456789X_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,)- Let0123456789X_0123456789Sym0KindInference GHC.Tuple.())- data Let0123456789X_0123456789Sym0 l- = forall arg. KindOf (Apply Let0123456789X_0123456789Sym0 arg) ~ KindOf (Let0123456789X_0123456789Sym1 arg) =>- Let0123456789X_0123456789Sym0KindInference- type instance Apply Let0123456789X_0123456789Sym0 l = Let0123456789X_0123456789Sym1 l- type family Let0123456789Y x where- Let0123456789Y x = Case_0123456789 x (Let0123456789X_0123456789Sym1 x)- type family Let0123456789Z x where- Let0123456789Z x = Case_0123456789 x (Let0123456789X_0123456789Sym1 x)- type family Let0123456789X_0123456789 x where- Let0123456789X_0123456789 x = Apply (Apply Tuple2Sym0 (Apply SuccSym0 x)) x- type Let0123456789BarSym1 t = Let0123456789Bar t- instance SuppressUnusedWarnings Let0123456789BarSym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Let0123456789BarSym0KindInference GHC.Tuple.())- data Let0123456789BarSym0 l- = forall arg. KindOf (Apply Let0123456789BarSym0 arg) ~ KindOf (Let0123456789BarSym1 arg) =>- Let0123456789BarSym0KindInference- type instance Apply Let0123456789BarSym0 l = Let0123456789BarSym1 l- type family Let0123456789Bar x :: a where- Let0123456789Bar x = x- type (:<<<%%%%%%%%%%:+$$$$) t (t :: Nat) (t :: Nat) =- (:<<<%%%%%%%%%%:+) t t t- instance SuppressUnusedWarnings (:<<<%%%%%%%%%%:+$$$) where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) (:<<<%%%%%%%%%%:+$$$###) GHC.Tuple.())- data (:<<<%%%%%%%%%%:+$$$) l (l :: Nat) (l :: TyFun Nat Nat)- = forall arg. KindOf (Apply ((:<<<%%%%%%%%%%:+$$$) l l) arg) ~ KindOf ((:<<<%%%%%%%%%%:+$$$$) l l arg) =>- :<<<%%%%%%%%%%:+$$$###- type instance Apply ((:<<<%%%%%%%%%%:+$$$) l l) l = (:<<<%%%%%%%%%%:+$$$$) l l l- instance SuppressUnusedWarnings (:<<<%%%%%%%%%%:+$$) where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) (:<<<%%%%%%%%%%:+$$###) GHC.Tuple.())- data (:<<<%%%%%%%%%%:+$$) l (l :: TyFun Nat (TyFun Nat Nat -> *))- = forall arg. KindOf (Apply ((:<<<%%%%%%%%%%:+$$) l) arg) ~ KindOf ((:<<<%%%%%%%%%%:+$$$) l arg) =>- :<<<%%%%%%%%%%:+$$###- type instance Apply ((:<<<%%%%%%%%%%:+$$) l) l = (:<<<%%%%%%%%%%:+$$$) l l- instance SuppressUnusedWarnings (:<<<%%%%%%%%%%:+$) where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) (:<<<%%%%%%%%%%:+$###) GHC.Tuple.())- data (:<<<%%%%%%%%%%:+$) l- = forall arg. KindOf (Apply (:<<<%%%%%%%%%%:+$) arg) ~ KindOf ((:<<<%%%%%%%%%%:+$$) arg) =>- :<<<%%%%%%%%%%:+$###- type instance Apply (:<<<%%%%%%%%%%:+$) l = (:<<<%%%%%%%%%%:+$$) l- type family (:<<<%%%%%%%%%%:+) x (a :: Nat) (a :: Nat) :: Nat where- (:<<<%%%%%%%%%%:+) x Zero m = m- (:<<<%%%%%%%%%%:+) x (Succ n) m = Apply SuccSym0 (Apply (Apply ((:<<<%%%%%%%%%%:+$$) x) n) x)- type Let0123456789ZSym1 t = Let0123456789Z t- instance SuppressUnusedWarnings Let0123456789ZSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Let0123456789ZSym0KindInference GHC.Tuple.())- data Let0123456789ZSym0 l- = forall arg. KindOf (Apply Let0123456789ZSym0 arg) ~ KindOf (Let0123456789ZSym1 arg) =>- Let0123456789ZSym0KindInference- type instance Apply Let0123456789ZSym0 l = Let0123456789ZSym1 l- type (:<<<%%%%%%%%%%:+$$$$) t (t :: Nat) (t :: Nat) =- (:<<<%%%%%%%%%%:+) t t t- instance SuppressUnusedWarnings (:<<<%%%%%%%%%%:+$$$) where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) (:<<<%%%%%%%%%%:+$$$###) GHC.Tuple.())- data (:<<<%%%%%%%%%%:+$$$) l (l :: Nat) (l :: TyFun Nat Nat)- = forall arg. KindOf (Apply ((:<<<%%%%%%%%%%:+$$$) l l) arg) ~ KindOf ((:<<<%%%%%%%%%%:+$$$$) l l arg) =>- :<<<%%%%%%%%%%:+$$$###- type instance Apply ((:<<<%%%%%%%%%%:+$$$) l l) l = (:<<<%%%%%%%%%%:+$$$$) l l l- instance SuppressUnusedWarnings (:<<<%%%%%%%%%%:+$$) where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) (:<<<%%%%%%%%%%:+$$###) GHC.Tuple.())- data (:<<<%%%%%%%%%%:+$$) l (l :: TyFun Nat (TyFun Nat Nat -> *))- = forall arg. KindOf (Apply ((:<<<%%%%%%%%%%:+$$) l) arg) ~ KindOf ((:<<<%%%%%%%%%%:+$$$) l arg) =>- :<<<%%%%%%%%%%:+$$###- type instance Apply ((:<<<%%%%%%%%%%:+$$) l) l = (:<<<%%%%%%%%%%:+$$$) l l- instance SuppressUnusedWarnings (:<<<%%%%%%%%%%:+$) where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) (:<<<%%%%%%%%%%:+$###) GHC.Tuple.())- data (:<<<%%%%%%%%%%:+$) l- = forall arg. KindOf (Apply (:<<<%%%%%%%%%%:+$) arg) ~ KindOf ((:<<<%%%%%%%%%%:+$$) arg) =>- :<<<%%%%%%%%%%:+$###- type instance Apply (:<<<%%%%%%%%%%:+$) l = (:<<<%%%%%%%%%%:+$$) l- type family Let0123456789Z x :: Nat where- Let0123456789Z x = x- type family (:<<<%%%%%%%%%%:+) x (a :: Nat) (a :: Nat) :: Nat where- (:<<<%%%%%%%%%%:+) x Zero m = m- (:<<<%%%%%%%%%%:+) x (Succ n) m = Apply SuccSym0 (Apply (Apply ((:<<<%%%%%%%%%%:+$$) x) n) m)- type (:<<<%%%%%%%%%%:+$$$$) t (t :: Nat) (t :: Nat) =- (:<<<%%%%%%%%%%:+) t t t- instance SuppressUnusedWarnings (:<<<%%%%%%%%%%:+$$$) where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) (:<<<%%%%%%%%%%:+$$$###) GHC.Tuple.())- data (:<<<%%%%%%%%%%:+$$$) l (l :: Nat) (l :: TyFun Nat Nat)- = forall arg. KindOf (Apply ((:<<<%%%%%%%%%%:+$$$) l l) arg) ~ KindOf ((:<<<%%%%%%%%%%:+$$$$) l l arg) =>- :<<<%%%%%%%%%%:+$$$###- type instance Apply ((:<<<%%%%%%%%%%:+$$$) l l) l = (:<<<%%%%%%%%%%:+$$$$) l l l- instance SuppressUnusedWarnings (:<<<%%%%%%%%%%:+$$) where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) (:<<<%%%%%%%%%%:+$$###) GHC.Tuple.())- data (:<<<%%%%%%%%%%:+$$) l (l :: TyFun Nat (TyFun Nat Nat -> *))- = forall arg. KindOf (Apply ((:<<<%%%%%%%%%%:+$$) l) arg) ~ KindOf ((:<<<%%%%%%%%%%:+$$$) l arg) =>- :<<<%%%%%%%%%%:+$$###- type instance Apply ((:<<<%%%%%%%%%%:+$$) l) l = (:<<<%%%%%%%%%%:+$$$) l l- instance SuppressUnusedWarnings (:<<<%%%%%%%%%%:+$) where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) (:<<<%%%%%%%%%%:+$###) GHC.Tuple.())- data (:<<<%%%%%%%%%%:+$) l- = forall arg. KindOf (Apply (:<<<%%%%%%%%%%:+$) arg) ~ KindOf ((:<<<%%%%%%%%%%:+$$) arg) =>- :<<<%%%%%%%%%%:+$###- type instance Apply (:<<<%%%%%%%%%%:+$) l = (:<<<%%%%%%%%%%:+$$) l- type family (:<<<%%%%%%%%%%:+) x (a :: Nat) (a :: Nat) :: Nat where- (:<<<%%%%%%%%%%:+) x Zero m = m- (:<<<%%%%%%%%%%:+) x (Succ n) m = Apply SuccSym0 (Apply (Apply ((:<<<%%%%%%%%%%:+$$) x) n) m)- type family Lambda_0123456789 x a_0123456789 t where- Lambda_0123456789 x a_0123456789 x = x- type Lambda_0123456789Sym3 t t t = Lambda_0123456789 t t t- instance SuppressUnusedWarnings Lambda_0123456789Sym2 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym2KindInference GHC.Tuple.())- data Lambda_0123456789Sym2 l l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym2 l l) arg) ~ KindOf (Lambda_0123456789Sym3 l l arg) =>- Lambda_0123456789Sym2KindInference- type instance Apply (Lambda_0123456789Sym2 l l) l = Lambda_0123456789Sym3 l l l- instance SuppressUnusedWarnings Lambda_0123456789Sym1 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym1KindInference GHC.Tuple.())- data Lambda_0123456789Sym1 l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym1 l) arg) ~ KindOf (Lambda_0123456789Sym2 l arg) =>- Lambda_0123456789Sym1KindInference- type instance Apply (Lambda_0123456789Sym1 l) l = Lambda_0123456789Sym2 l l- instance SuppressUnusedWarnings Lambda_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym0KindInference GHC.Tuple.())- data Lambda_0123456789Sym0 l- = forall arg. KindOf (Apply Lambda_0123456789Sym0 arg) ~ KindOf (Lambda_0123456789Sym1 arg) =>- Lambda_0123456789Sym0KindInference- type instance Apply Lambda_0123456789Sym0 l = Lambda_0123456789Sym1 l- type Let0123456789ZSym2 t (t :: Nat) = Let0123456789Z t t- instance SuppressUnusedWarnings Let0123456789ZSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Let0123456789ZSym1KindInference GHC.Tuple.())- data Let0123456789ZSym1 l (l :: TyFun Nat Nat)- = forall arg. KindOf (Apply (Let0123456789ZSym1 l) arg) ~ KindOf (Let0123456789ZSym2 l arg) =>- Let0123456789ZSym1KindInference- type instance Apply (Let0123456789ZSym1 l) l = Let0123456789ZSym2 l l- instance SuppressUnusedWarnings Let0123456789ZSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Let0123456789ZSym0KindInference GHC.Tuple.())- data Let0123456789ZSym0 l- = forall arg. KindOf (Apply Let0123456789ZSym0 arg) ~ KindOf (Let0123456789ZSym1 arg) =>- Let0123456789ZSym0KindInference- type instance Apply Let0123456789ZSym0 l = Let0123456789ZSym1 l- type family Let0123456789Z x (a :: Nat) :: Nat where- Let0123456789Z x a_0123456789 = Apply (Apply (Apply Lambda_0123456789Sym0 x) a_0123456789) a_0123456789- type family Lambda_0123456789 x t where- Lambda_0123456789 x x = x- type Lambda_0123456789Sym2 t t = Lambda_0123456789 t t- instance SuppressUnusedWarnings Lambda_0123456789Sym1 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym1KindInference GHC.Tuple.())- data Lambda_0123456789Sym1 l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym1 l) arg) ~ KindOf (Lambda_0123456789Sym2 l arg) =>- Lambda_0123456789Sym1KindInference- type instance Apply (Lambda_0123456789Sym1 l) l = Lambda_0123456789Sym2 l l- instance SuppressUnusedWarnings Lambda_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym0KindInference GHC.Tuple.())- data Lambda_0123456789Sym0 l- = forall arg. KindOf (Apply Lambda_0123456789Sym0 arg) ~ KindOf (Lambda_0123456789Sym1 arg) =>- Lambda_0123456789Sym0KindInference- type instance Apply Lambda_0123456789Sym0 l = Lambda_0123456789Sym1 l- type Let0123456789ZSym1 t = Let0123456789Z t- instance SuppressUnusedWarnings Let0123456789ZSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Let0123456789ZSym0KindInference GHC.Tuple.())- data Let0123456789ZSym0 l- = forall arg. KindOf (Apply Let0123456789ZSym0 arg) ~ KindOf (Let0123456789ZSym1 arg) =>- Let0123456789ZSym0KindInference- type instance Apply Let0123456789ZSym0 l = Let0123456789ZSym1 l- type family Let0123456789Z x :: Nat where- Let0123456789Z x = Apply (Apply Lambda_0123456789Sym0 x) ZeroSym0- type Let0123456789XSym1 t = Let0123456789X t- instance SuppressUnusedWarnings Let0123456789XSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Let0123456789XSym0KindInference GHC.Tuple.())- data Let0123456789XSym0 l- = forall arg. KindOf (Apply Let0123456789XSym0 arg) ~ KindOf (Let0123456789XSym1 arg) =>- Let0123456789XSym0KindInference- type instance Apply Let0123456789XSym0 l = Let0123456789XSym1 l- type family Let0123456789X x :: Nat where- Let0123456789X x = ZeroSym0- type Let0123456789FSym2 t (t :: Nat) = Let0123456789F t t- instance SuppressUnusedWarnings Let0123456789FSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Let0123456789FSym1KindInference GHC.Tuple.())- data Let0123456789FSym1 l (l :: TyFun Nat Nat)- = forall arg. KindOf (Apply (Let0123456789FSym1 l) arg) ~ KindOf (Let0123456789FSym2 l arg) =>- Let0123456789FSym1KindInference- type instance Apply (Let0123456789FSym1 l) l = Let0123456789FSym2 l l- instance SuppressUnusedWarnings Let0123456789FSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Let0123456789FSym0KindInference GHC.Tuple.())- data Let0123456789FSym0 l- = forall arg. KindOf (Apply Let0123456789FSym0 arg) ~ KindOf (Let0123456789FSym1 arg) =>- Let0123456789FSym0KindInference- type instance Apply Let0123456789FSym0 l = Let0123456789FSym1 l- type family Let0123456789F x (a :: Nat) :: Nat where- Let0123456789F x y = Apply SuccSym0 y- type Let0123456789ZSym1 t = Let0123456789Z t- instance SuppressUnusedWarnings Let0123456789ZSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Let0123456789ZSym0KindInference GHC.Tuple.())- data Let0123456789ZSym0 l- = forall arg. KindOf (Apply Let0123456789ZSym0 arg) ~ KindOf (Let0123456789ZSym1 arg) =>- Let0123456789ZSym0KindInference- type instance Apply Let0123456789ZSym0 l = Let0123456789ZSym1 l- type family Let0123456789Z x :: Nat where- Let0123456789Z x = Apply (Let0123456789FSym1 x) x- type Let0123456789ZSym2 t t = Let0123456789Z t t- instance SuppressUnusedWarnings Let0123456789ZSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Let0123456789ZSym1KindInference GHC.Tuple.())- data Let0123456789ZSym1 l l- = forall arg. KindOf (Apply (Let0123456789ZSym1 l) arg) ~ KindOf (Let0123456789ZSym2 l arg) =>- Let0123456789ZSym1KindInference- type instance Apply (Let0123456789ZSym1 l) l = Let0123456789ZSym2 l l- instance SuppressUnusedWarnings Let0123456789ZSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Let0123456789ZSym0KindInference GHC.Tuple.())- data Let0123456789ZSym0 l- = forall arg. KindOf (Apply Let0123456789ZSym0 arg) ~ KindOf (Let0123456789ZSym1 arg) =>- Let0123456789ZSym0KindInference- type instance Apply Let0123456789ZSym0 l = Let0123456789ZSym1 l- type family Let0123456789Z x y :: Nat where- Let0123456789Z x y = Apply SuccSym0 y- type Let0123456789FSym2 t (t :: Nat) = Let0123456789F t t- instance SuppressUnusedWarnings Let0123456789FSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Let0123456789FSym1KindInference GHC.Tuple.())- data Let0123456789FSym1 l (l :: TyFun Nat Nat)- = forall arg. KindOf (Apply (Let0123456789FSym1 l) arg) ~ KindOf (Let0123456789FSym2 l arg) =>- Let0123456789FSym1KindInference- type instance Apply (Let0123456789FSym1 l) l = Let0123456789FSym2 l l- instance SuppressUnusedWarnings Let0123456789FSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Let0123456789FSym0KindInference GHC.Tuple.())- data Let0123456789FSym0 l- = forall arg. KindOf (Apply Let0123456789FSym0 arg) ~ KindOf (Let0123456789FSym1 arg) =>- Let0123456789FSym0KindInference- type instance Apply Let0123456789FSym0 l = Let0123456789FSym1 l- type family Let0123456789F x (a :: Nat) :: Nat where- Let0123456789F x y = Apply SuccSym0 (Let0123456789ZSym2 x y)- type Let0123456789FSym2 t (t :: Nat) = Let0123456789F t t- instance SuppressUnusedWarnings Let0123456789FSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Let0123456789FSym1KindInference GHC.Tuple.())- data Let0123456789FSym1 l (l :: TyFun Nat Nat)- = forall arg. KindOf (Apply (Let0123456789FSym1 l) arg) ~ KindOf (Let0123456789FSym2 l arg) =>- Let0123456789FSym1KindInference- type instance Apply (Let0123456789FSym1 l) l = Let0123456789FSym2 l l- instance SuppressUnusedWarnings Let0123456789FSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Let0123456789FSym0KindInference GHC.Tuple.())- data Let0123456789FSym0 l- = forall arg. KindOf (Apply Let0123456789FSym0 arg) ~ KindOf (Let0123456789FSym1 arg) =>- Let0123456789FSym0KindInference- type instance Apply Let0123456789FSym0 l = Let0123456789FSym1 l- type family Let0123456789F x (a :: Nat) :: Nat where- Let0123456789F x y = Apply SuccSym0 y- type Let0123456789YSym1 t = Let0123456789Y t- instance SuppressUnusedWarnings Let0123456789YSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Let0123456789YSym0KindInference GHC.Tuple.())- data Let0123456789YSym0 l- = forall arg. KindOf (Apply Let0123456789YSym0 arg) ~ KindOf (Let0123456789YSym1 arg) =>- Let0123456789YSym0KindInference- type instance Apply Let0123456789YSym0 l = Let0123456789YSym1 l- type family Let0123456789Y x :: Nat where- Let0123456789Y x = Apply SuccSym0 x- type Let0123456789YSym0 = Let0123456789Y- type Let0123456789ZSym0 = Let0123456789Z- type family Let0123456789Y where- Let0123456789Y = Apply SuccSym0 ZeroSym0- type family Let0123456789Z where- Let0123456789Z = Apply SuccSym0 Let0123456789YSym0- type Let0123456789YSym1 t = Let0123456789Y t- instance SuppressUnusedWarnings Let0123456789YSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Let0123456789YSym0KindInference GHC.Tuple.())- data Let0123456789YSym0 l- = forall arg. KindOf (Apply Let0123456789YSym0 arg) ~ KindOf (Let0123456789YSym1 arg) =>- Let0123456789YSym0KindInference- type instance Apply Let0123456789YSym0 l = Let0123456789YSym1 l- type family Let0123456789Y x :: Nat where- Let0123456789Y x = Apply SuccSym0 ZeroSym0- type Foo14Sym1 (t :: Nat) = Foo14 t- instance SuppressUnusedWarnings Foo14Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo14Sym0KindInference GHC.Tuple.())- data Foo14Sym0 (l :: TyFun Nat (Nat, Nat))- = forall arg. KindOf (Apply Foo14Sym0 arg) ~ KindOf (Foo14Sym1 arg) =>- Foo14Sym0KindInference- type instance Apply Foo14Sym0 l = Foo14Sym1 l- type Foo13_Sym1 (t :: a0123456789) = Foo13_ t- instance SuppressUnusedWarnings Foo13_Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo13_Sym0KindInference GHC.Tuple.())- data Foo13_Sym0 (l :: TyFun a0123456789 a0123456789)- = forall arg. KindOf (Apply Foo13_Sym0 arg) ~ KindOf (Foo13_Sym1 arg) =>- Foo13_Sym0KindInference- type instance Apply Foo13_Sym0 l = Foo13_Sym1 l- type Foo13Sym1 (t :: a0123456789) = Foo13 t- instance SuppressUnusedWarnings Foo13Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo13Sym0KindInference GHC.Tuple.())- data Foo13Sym0 (l :: TyFun a0123456789 a0123456789)- = forall arg. KindOf (Apply Foo13Sym0 arg) ~ KindOf (Foo13Sym1 arg) =>- Foo13Sym0KindInference- type instance Apply Foo13Sym0 l = Foo13Sym1 l- type Foo12Sym1 (t :: Nat) = Foo12 t- instance SuppressUnusedWarnings Foo12Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo12Sym0KindInference GHC.Tuple.())- data Foo12Sym0 (l :: TyFun Nat Nat)- = forall arg. KindOf (Apply Foo12Sym0 arg) ~ KindOf (Foo12Sym1 arg) =>- Foo12Sym0KindInference- type instance Apply Foo12Sym0 l = Foo12Sym1 l- type Foo11Sym1 (t :: Nat) = Foo11 t- instance SuppressUnusedWarnings Foo11Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo11Sym0KindInference GHC.Tuple.())- data Foo11Sym0 (l :: TyFun Nat Nat)- = forall arg. KindOf (Apply Foo11Sym0 arg) ~ KindOf (Foo11Sym1 arg) =>- Foo11Sym0KindInference- type instance Apply Foo11Sym0 l = Foo11Sym1 l- type Foo10Sym1 (t :: Nat) = Foo10 t- instance SuppressUnusedWarnings Foo10Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo10Sym0KindInference GHC.Tuple.())- data Foo10Sym0 (l :: TyFun Nat Nat)- = forall arg. KindOf (Apply Foo10Sym0 arg) ~ KindOf (Foo10Sym1 arg) =>- Foo10Sym0KindInference- type instance Apply Foo10Sym0 l = Foo10Sym1 l- type Foo9Sym1 (t :: Nat) = Foo9 t- instance SuppressUnusedWarnings Foo9Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo9Sym0KindInference GHC.Tuple.())- data Foo9Sym0 (l :: TyFun Nat Nat)- = forall arg. KindOf (Apply Foo9Sym0 arg) ~ KindOf (Foo9Sym1 arg) =>- Foo9Sym0KindInference- type instance Apply Foo9Sym0 l = Foo9Sym1 l- type Foo8Sym1 (t :: Nat) = Foo8 t- instance SuppressUnusedWarnings Foo8Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo8Sym0KindInference GHC.Tuple.())- data Foo8Sym0 (l :: TyFun Nat Nat)- = forall arg. KindOf (Apply Foo8Sym0 arg) ~ KindOf (Foo8Sym1 arg) =>- Foo8Sym0KindInference- type instance Apply Foo8Sym0 l = Foo8Sym1 l- type Foo7Sym1 (t :: Nat) = Foo7 t- instance SuppressUnusedWarnings Foo7Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo7Sym0KindInference GHC.Tuple.())- data Foo7Sym0 (l :: TyFun Nat Nat)- = forall arg. KindOf (Apply Foo7Sym0 arg) ~ KindOf (Foo7Sym1 arg) =>- Foo7Sym0KindInference- type instance Apply Foo7Sym0 l = Foo7Sym1 l- type Foo6Sym1 (t :: Nat) = Foo6 t- instance SuppressUnusedWarnings Foo6Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo6Sym0KindInference GHC.Tuple.())- data Foo6Sym0 (l :: TyFun Nat Nat)- = forall arg. KindOf (Apply Foo6Sym0 arg) ~ KindOf (Foo6Sym1 arg) =>- Foo6Sym0KindInference- type instance Apply Foo6Sym0 l = Foo6Sym1 l- type Foo5Sym1 (t :: Nat) = Foo5 t- instance SuppressUnusedWarnings Foo5Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo5Sym0KindInference GHC.Tuple.())- data Foo5Sym0 (l :: TyFun Nat Nat)- = forall arg. KindOf (Apply Foo5Sym0 arg) ~ KindOf (Foo5Sym1 arg) =>- Foo5Sym0KindInference- type instance Apply Foo5Sym0 l = Foo5Sym1 l- type Foo4Sym1 (t :: Nat) = Foo4 t- instance SuppressUnusedWarnings Foo4Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo4Sym0KindInference GHC.Tuple.())- data Foo4Sym0 (l :: TyFun Nat Nat)- = forall arg. KindOf (Apply Foo4Sym0 arg) ~ KindOf (Foo4Sym1 arg) =>- Foo4Sym0KindInference- type instance Apply Foo4Sym0 l = Foo4Sym1 l- type Foo3Sym1 (t :: Nat) = Foo3 t- instance SuppressUnusedWarnings Foo3Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo3Sym0KindInference GHC.Tuple.())- data Foo3Sym0 (l :: TyFun Nat Nat)- = forall arg. KindOf (Apply Foo3Sym0 arg) ~ KindOf (Foo3Sym1 arg) =>- Foo3Sym0KindInference- type instance Apply Foo3Sym0 l = Foo3Sym1 l- type Foo2Sym0 = Foo2- type Foo1Sym1 (t :: Nat) = Foo1 t- instance SuppressUnusedWarnings Foo1Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo1Sym0KindInference GHC.Tuple.())- data Foo1Sym0 (l :: TyFun Nat Nat)- = forall arg. KindOf (Apply Foo1Sym0 arg) ~ KindOf (Foo1Sym1 arg) =>- Foo1Sym0KindInference- type instance Apply Foo1Sym0 l = Foo1Sym1 l- type family Foo14 (a :: Nat) :: (Nat, Nat) where- Foo14 x = Apply (Apply Tuple2Sym0 (Let0123456789ZSym1 x)) (Let0123456789YSym1 x)- type family Foo13_ (a :: a) :: a where- Foo13_ y = y- type family Foo13 (a :: a) :: a where- Foo13 x = Apply Foo13_Sym0 (Let0123456789BarSym1 x)- type family Foo12 (a :: Nat) :: Nat where- Foo12 x = Apply (Apply ((:<<<%%%%%%%%%%:+$$) x) x) (Apply SuccSym0 (Apply SuccSym0 ZeroSym0))- type family Foo11 (a :: Nat) :: Nat where- Foo11 x = Apply (Apply ((:<<<%%%%%%%%%%:+$$) x) (Apply SuccSym0 ZeroSym0)) (Let0123456789ZSym1 x)- type family Foo10 (a :: Nat) :: Nat where- Foo10 x = Apply (Apply ((:<<<%%%%%%%%%%:+$$) x) (Apply SuccSym0 ZeroSym0)) x- type family Foo9 (a :: Nat) :: Nat where- Foo9 x = Apply (Let0123456789ZSym1 x) x- type family Foo8 (a :: Nat) :: Nat where- Foo8 x = Let0123456789ZSym1 x- type family Foo7 (a :: Nat) :: Nat where- Foo7 x = Let0123456789XSym1 x- type family Foo6 (a :: Nat) :: Nat where- Foo6 x = Let0123456789ZSym1 x- type family Foo5 (a :: Nat) :: Nat where- Foo5 x = Apply (Let0123456789FSym1 x) x- type family Foo4 (a :: Nat) :: Nat where- Foo4 x = Apply (Let0123456789FSym1 x) x- type family Foo3 (a :: Nat) :: Nat where- Foo3 x = Let0123456789YSym1 x- type family Foo2 :: Nat where- Foo2 = Let0123456789ZSym0- type family Foo1 (a :: Nat) :: Nat where- Foo1 x = Let0123456789YSym1 x- sFoo14 ::- forall (t :: Nat). Sing t -> Sing (Apply Foo14Sym0 t :: (Nat, Nat))- sFoo13_ ::- forall (t :: a). Sing t -> Sing (Apply Foo13_Sym0 t :: a)- sFoo13 :: forall (t :: a). Sing t -> Sing (Apply Foo13Sym0 t :: a)- sFoo12 ::- forall (t :: Nat). Sing t -> Sing (Apply Foo12Sym0 t :: Nat)- sFoo11 ::- forall (t :: Nat). Sing t -> Sing (Apply Foo11Sym0 t :: Nat)- sFoo10 ::- forall (t :: Nat). Sing t -> Sing (Apply Foo10Sym0 t :: Nat)- sFoo9 ::- forall (t :: Nat). Sing t -> Sing (Apply Foo9Sym0 t :: Nat)- sFoo8 ::- forall (t :: Nat). Sing t -> Sing (Apply Foo8Sym0 t :: Nat)- sFoo7 ::- forall (t :: Nat). Sing t -> Sing (Apply Foo7Sym0 t :: Nat)- sFoo6 ::- forall (t :: Nat). Sing t -> Sing (Apply Foo6Sym0 t :: Nat)- sFoo5 ::- forall (t :: Nat). Sing t -> Sing (Apply Foo5Sym0 t :: Nat)- sFoo4 ::- forall (t :: Nat). Sing t -> Sing (Apply Foo4Sym0 t :: Nat)- sFoo3 ::- forall (t :: Nat). Sing t -> Sing (Apply Foo3Sym0 t :: Nat)- sFoo2 :: Sing (Foo2Sym0 :: Nat)- sFoo1 ::- forall (t :: Nat). Sing t -> Sing (Apply Foo1Sym0 t :: Nat)- sFoo14 sX- = let- lambda ::- forall x. t ~ x => Sing x -> Sing (Apply Foo14Sym0 t :: (Nat, Nat))- lambda x- = let- sY :: Sing (Let0123456789YSym1 x)- sZ :: Sing (Let0123456789ZSym1 x)- sX_0123456789 :: Sing (Let0123456789X_0123456789Sym1 x)- sY- = case sX_0123456789 of {- STuple2 sY_0123456789 _s_z_0123456789- -> let- lambda ::- forall y_0123456789- _z_0123456789. Apply (Apply Tuple2Sym0 y_0123456789) _z_0123456789 ~ Let0123456789X_0123456789Sym1 x =>- Sing y_0123456789- -> Sing _z_0123456789- -> Sing (Case_0123456789 x (Apply (Apply Tuple2Sym0 y_0123456789) _z_0123456789))- lambda y_0123456789 _z_0123456789 = y_0123456789- in lambda sY_0123456789 _s_z_0123456789 } ::- Sing (Case_0123456789 x (Let0123456789X_0123456789Sym1 x))- sZ- = case sX_0123456789 of {- STuple2 _s_z_0123456789 sY_0123456789- -> let- lambda ::- forall _z_0123456789- y_0123456789. Apply (Apply Tuple2Sym0 _z_0123456789) y_0123456789 ~ Let0123456789X_0123456789Sym1 x =>- Sing _z_0123456789- -> Sing y_0123456789- -> Sing (Case_0123456789 x (Apply (Apply Tuple2Sym0 _z_0123456789) y_0123456789))- lambda _z_0123456789 y_0123456789 = y_0123456789- in lambda _s_z_0123456789 sY_0123456789 } ::- Sing (Case_0123456789 x (Let0123456789X_0123456789Sym1 x))- sX_0123456789- = applySing- (applySing- (singFun2 (Proxy :: Proxy Tuple2Sym0) STuple2)- (applySing (singFun1 (Proxy :: Proxy SuccSym0) SSucc) x))- x- in- applySing- (applySing (singFun2 (Proxy :: Proxy Tuple2Sym0) STuple2) sZ) sY- in lambda sX- sFoo13_ sY- = let- lambda ::- forall y. t ~ y => Sing y -> Sing (Apply Foo13_Sym0 t :: a)- lambda y = y- in lambda sY- sFoo13 sX- = let- lambda ::- forall x. t ~ x => Sing x -> Sing (Apply Foo13Sym0 t :: a)- lambda x- = let- sBar :: Sing (Let0123456789BarSym1 x :: a)- sBar = x- in applySing (singFun1 (Proxy :: Proxy Foo13_Sym0) sFoo13_) sBar- in lambda sX- sFoo12 sX- = let- lambda ::- forall x. t ~ x => Sing x -> Sing (Apply Foo12Sym0 t :: Nat)- lambda x- = let- (%:+) ::- forall (t :: Nat) (t :: Nat).- Sing t- -> Sing t- -> Sing (Apply (Apply ((:<<<%%%%%%%%%%:+$$) x) t) t :: Nat)- (%:+) SZero sM- = let- lambda ::- forall m. (t ~ ZeroSym0, t ~ m) =>- Sing m -> Sing (Apply (Apply ((:<<<%%%%%%%%%%:+$$) x) t) t :: Nat)- lambda m = m- in lambda sM- (%:+) (SSucc sN) sM- = let- lambda ::- forall n m. (t ~ Apply SuccSym0 n, t ~ m) =>- Sing n- -> Sing m- -> Sing (Apply (Apply ((:<<<%%%%%%%%%%:+$$) x) t) t :: Nat)- lambda n m- = applySing- (singFun1 (Proxy :: Proxy SuccSym0) SSucc)- (applySing- (applySing- (singFun2 (Proxy :: Proxy ((:<<<%%%%%%%%%%:+$$) x)) (%:+)) n)- x)- in lambda sN sM- in- applySing- (applySing- (singFun2 (Proxy :: Proxy ((:<<<%%%%%%%%%%:+$$) x)) (%:+)) x)- (applySing- (singFun1 (Proxy :: Proxy SuccSym0) SSucc)- (applySing (singFun1 (Proxy :: Proxy SuccSym0) SSucc) SZero))- in lambda sX- sFoo11 sX- = let- lambda ::- forall x. t ~ x => Sing x -> Sing (Apply Foo11Sym0 t :: Nat)- lambda x- = let- sZ :: Sing (Let0123456789ZSym1 x :: Nat)- (%:+) ::- forall (t :: Nat) (t :: Nat).- Sing t- -> Sing t- -> Sing (Apply (Apply ((:<<<%%%%%%%%%%:+$$) x) t) t :: Nat)- sZ = x- (%:+) SZero sM- = let- lambda ::- forall m. (t ~ ZeroSym0, t ~ m) =>- Sing m -> Sing (Apply (Apply ((:<<<%%%%%%%%%%:+$$) x) t) t :: Nat)- lambda m = m- in lambda sM- (%:+) (SSucc sN) sM- = let- lambda ::- forall n m. (t ~ Apply SuccSym0 n, t ~ m) =>- Sing n- -> Sing m- -> Sing (Apply (Apply ((:<<<%%%%%%%%%%:+$$) x) t) t :: Nat)- lambda n m- = applySing- (singFun1 (Proxy :: Proxy SuccSym0) SSucc)- (applySing- (applySing- (singFun2 (Proxy :: Proxy ((:<<<%%%%%%%%%%:+$$) x)) (%:+)) n)- m)- in lambda sN sM- in- applySing- (applySing- (singFun2 (Proxy :: Proxy ((:<<<%%%%%%%%%%:+$$) x)) (%:+))- (applySing (singFun1 (Proxy :: Proxy SuccSym0) SSucc) SZero))- sZ- in lambda sX- sFoo10 sX- = let- lambda ::- forall x. t ~ x => Sing x -> Sing (Apply Foo10Sym0 t :: Nat)- lambda x- = let- (%:+) ::- forall (t :: Nat) (t :: Nat).- Sing t- -> Sing t- -> Sing (Apply (Apply ((:<<<%%%%%%%%%%:+$$) x) t) t :: Nat)- (%:+) SZero sM- = let- lambda ::- forall m. (t ~ ZeroSym0, t ~ m) =>- Sing m -> Sing (Apply (Apply ((:<<<%%%%%%%%%%:+$$) x) t) t :: Nat)- lambda m = m- in lambda sM- (%:+) (SSucc sN) sM- = let- lambda ::- forall n m. (t ~ Apply SuccSym0 n, t ~ m) =>- Sing n- -> Sing m- -> Sing (Apply (Apply ((:<<<%%%%%%%%%%:+$$) x) t) t :: Nat)- lambda n m- = applySing- (singFun1 (Proxy :: Proxy SuccSym0) SSucc)- (applySing- (applySing- (singFun2 (Proxy :: Proxy ((:<<<%%%%%%%%%%:+$$) x)) (%:+)) n)- m)- in lambda sN sM- in- applySing- (applySing- (singFun2 (Proxy :: Proxy ((:<<<%%%%%%%%%%:+$$) x)) (%:+))- (applySing (singFun1 (Proxy :: Proxy SuccSym0) SSucc) SZero))- x- in lambda sX- sFoo9 sX- = let- lambda ::- forall x. t ~ x => Sing x -> Sing (Apply Foo9Sym0 t :: Nat)- lambda x- = let- sZ ::- forall (t :: Nat).- Sing t -> Sing (Apply (Let0123456789ZSym1 x) t :: Nat)- sZ sA_0123456789- = let- lambda ::- forall a_0123456789. t ~ a_0123456789 =>- Sing a_0123456789 -> Sing (Apply (Let0123456789ZSym1 x) t :: Nat)- lambda a_0123456789- = applySing- (singFun1- (Proxy ::- Proxy (Apply (Apply Lambda_0123456789Sym0 x) a_0123456789))- (\ sX- -> let- lambda ::- forall x.- Sing x- -> Sing (Apply (Apply (Apply Lambda_0123456789Sym0 x) a_0123456789) x)- lambda x = x- in lambda sX))- a_0123456789- in lambda sA_0123456789- in- applySing (singFun1 (Proxy :: Proxy (Let0123456789ZSym1 x)) sZ) x- in lambda sX- sFoo8 sX- = let- lambda ::- forall x. t ~ x => Sing x -> Sing (Apply Foo8Sym0 t :: Nat)- lambda x- = let- sZ :: Sing (Let0123456789ZSym1 x :: Nat)- sZ- = applySing- (singFun1- (Proxy :: Proxy (Apply Lambda_0123456789Sym0 x))- (\ sX- -> let- lambda ::- forall x.- Sing x -> Sing (Apply (Apply Lambda_0123456789Sym0 x) x)- lambda x = x- in lambda sX))- SZero- in sZ- in lambda sX- sFoo7 sX- = let- lambda ::- forall x. t ~ x => Sing x -> Sing (Apply Foo7Sym0 t :: Nat)- lambda x- = let- sX :: Sing (Let0123456789XSym1 x :: Nat)- sX = SZero- in sX- in lambda sX- sFoo6 sX- = let- lambda ::- forall x. t ~ x => Sing x -> Sing (Apply Foo6Sym0 t :: Nat)- lambda x- = let- sF ::- forall (t :: Nat).- Sing t -> Sing (Apply (Let0123456789FSym1 x) t :: Nat)- sF sY- = let- lambda ::- forall y. t ~ y =>- Sing y -> Sing (Apply (Let0123456789FSym1 x) t :: Nat)- lambda y = applySing (singFun1 (Proxy :: Proxy SuccSym0) SSucc) y- in lambda sY in- let- sZ :: Sing (Let0123456789ZSym1 x :: Nat)- sZ- = applySing (singFun1 (Proxy :: Proxy (Let0123456789FSym1 x)) sF) x- in sZ- in lambda sX- sFoo5 sX- = let- lambda ::- forall x. t ~ x => Sing x -> Sing (Apply Foo5Sym0 t :: Nat)- lambda x- = let- sF ::- forall (t :: Nat).- Sing t -> Sing (Apply (Let0123456789FSym1 x) t :: Nat)- sF sY- = let- lambda ::- forall y. t ~ y =>- Sing y -> Sing (Apply (Let0123456789FSym1 x) t :: Nat)- lambda y- = let- sZ :: Sing (Let0123456789ZSym2 x y :: Nat)- sZ = applySing (singFun1 (Proxy :: Proxy SuccSym0) SSucc) y- in applySing (singFun1 (Proxy :: Proxy SuccSym0) SSucc) sZ- in lambda sY- in- applySing (singFun1 (Proxy :: Proxy (Let0123456789FSym1 x)) sF) x- in lambda sX- sFoo4 sX- = let- lambda ::- forall x. t ~ x => Sing x -> Sing (Apply Foo4Sym0 t :: Nat)- lambda x- = let- sF ::- forall (t :: Nat).- Sing t -> Sing (Apply (Let0123456789FSym1 x) t :: Nat)- sF sY- = let- lambda ::- forall y. t ~ y =>- Sing y -> Sing (Apply (Let0123456789FSym1 x) t :: Nat)- lambda y = applySing (singFun1 (Proxy :: Proxy SuccSym0) SSucc) y- in lambda sY- in- applySing (singFun1 (Proxy :: Proxy (Let0123456789FSym1 x)) sF) x- in lambda sX- sFoo3 sX- = let- lambda ::- forall x. t ~ x => Sing x -> Sing (Apply Foo3Sym0 t :: Nat)- lambda x- = let- sY :: Sing (Let0123456789YSym1 x :: Nat)- sY = applySing (singFun1 (Proxy :: Proxy SuccSym0) SSucc) x- in sY- in lambda sX- sFoo2- = let- sY :: Sing Let0123456789YSym0- sZ :: Sing Let0123456789ZSym0- sY = applySing (singFun1 (Proxy :: Proxy SuccSym0) SSucc) SZero- sZ = applySing (singFun1 (Proxy :: Proxy SuccSym0) SSucc) sY- in sZ- sFoo1 sX- = let- lambda ::- forall x. t ~ x => Sing x -> Sing (Apply Foo1Sym0 t :: Nat)- lambda x- = let- sY :: Sing (Let0123456789YSym1 x :: Nat)- sY = applySing (singFun1 (Proxy :: Proxy SuccSym0) SSucc) SZero- in sY- in lambda sX
− tests/compile-and-dump/Singletons/Maybe.ghc710.template
@@ -1,66 +0,0 @@-Singletons/Maybe.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| data Maybe a- = Nothing | Just a- deriving (Eq, Show) |]- ======>- data Maybe a- = Nothing | Just a- deriving (Eq, Show)- type family Equals_0123456789 (a :: Maybe k)- (b :: Maybe k) :: Bool where- Equals_0123456789 Nothing Nothing = TrueSym0- Equals_0123456789 (Just a) (Just b) = (:==) a b- Equals_0123456789 (a :: Maybe k) (b :: Maybe k) = FalseSym0- instance PEq (KProxy :: KProxy (Maybe k)) where- type (:==) (a :: Maybe k) (b :: Maybe k) = Equals_0123456789 a b- type NothingSym0 = Nothing- type JustSym1 (t :: a0123456789) = Just t- instance SuppressUnusedWarnings JustSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) JustSym0KindInference GHC.Tuple.())- data JustSym0 (l :: TyFun a0123456789 (Maybe a0123456789))- = forall arg. KindOf (Apply JustSym0 arg) ~ KindOf (JustSym1 arg) =>- JustSym0KindInference- type instance Apply JustSym0 l = JustSym1 l- data instance Sing (z :: Maybe a)- = z ~ Nothing => SNothing |- forall (n :: a). z ~ Just n => SJust (Sing (n :: a))- type SMaybe = (Sing :: Maybe a -> *)- instance SingKind (KProxy :: KProxy a) =>- SingKind (KProxy :: KProxy (Maybe a)) where- type DemoteRep (KProxy :: KProxy (Maybe a)) = Maybe (DemoteRep (KProxy :: KProxy a))- fromSing SNothing = Nothing- fromSing (SJust b) = Just (fromSing b)- toSing Nothing = SomeSing SNothing- toSing (Just b)- = case toSing b :: SomeSing (KProxy :: KProxy a) of {- SomeSing c -> SomeSing (SJust c) }- instance SEq (KProxy :: KProxy a) =>- SEq (KProxy :: KProxy (Maybe a)) where- (%:==) SNothing SNothing = STrue- (%:==) SNothing (SJust _) = SFalse- (%:==) (SJust _) SNothing = SFalse- (%:==) (SJust a) (SJust b) = (%:==) a b- instance SDecide (KProxy :: KProxy a) =>- SDecide (KProxy :: KProxy (Maybe a)) where- (%~) SNothing SNothing = Proved Refl- (%~) SNothing (SJust _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SJust _) SNothing- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SJust a) (SJust b)- = case (%~) a b of {- Proved Refl -> Proved Refl- Disproved contra- -> Disproved (\ refl -> case refl of { Refl -> contra Refl }) }- instance SingI Nothing where- sing = SNothing- instance SingI n => SingI (Just (n :: a)) where- sing = SJust sing
tests/compile-and-dump/Singletons/Maybe.ghc80.template view
@@ -12,7 +12,7 @@ Equals_0123456789 Nothing Nothing = TrueSym0 Equals_0123456789 (Just a) (Just b) = (:==) a b Equals_0123456789 (a :: Maybe k) (b :: Maybe k) = FalseSym0- instance PEq (KProxy :: KProxy (Maybe k)) where+ instance PEq (Proxy :: Proxy (Maybe k)) where type (:==) (a :: Maybe k) (b :: Maybe k) = Equals_0123456789 a b type NothingSym0 = Nothing type JustSym1 (t :: a0123456789) = Just t@@ -27,23 +27,20 @@ = z ~ Nothing => SNothing | forall (n :: a). z ~ Just n => SJust (Sing (n :: a)) type SMaybe = (Sing :: Maybe a -> GHC.Types.Type)- instance SingKind (KProxy :: KProxy a) =>- SingKind (KProxy :: KProxy (Maybe a)) where- type DemoteRep (KProxy :: KProxy (Maybe a)) = Maybe (DemoteRep (KProxy :: KProxy a))+ instance SingKind a => SingKind (Maybe a) where+ type DemoteRep (Maybe a) = Maybe (DemoteRep a) fromSing SNothing = Nothing fromSing (SJust b) = Just (fromSing b) toSing Nothing = SomeSing SNothing toSing (Just b)- = case toSing b :: SomeSing (KProxy :: KProxy a) of {+ = case toSing b :: SomeSing a of { SomeSing c -> SomeSing (SJust c) }- instance SEq (KProxy :: KProxy a) =>- SEq (KProxy :: KProxy (Maybe a)) where+ instance SEq a => SEq (Maybe a) where (%:==) SNothing SNothing = STrue (%:==) SNothing (SJust _) = SFalse (%:==) (SJust _) SNothing = SFalse (%:==) (SJust a) (SJust b) = (%:==) a b- instance SDecide (KProxy :: KProxy a) =>- SDecide (KProxy :: KProxy (Maybe a)) where+ instance SDecide a => SDecide (Maybe a) where (%~) SNothing SNothing = Proved Refl (%~) SNothing (SJust _) = Disproved
− tests/compile-and-dump/Singletons/Nat.ghc710.template
@@ -1,141 +0,0 @@-Singletons/Nat.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| plus :: Nat -> Nat -> Nat- plus Zero m = m- plus (Succ n) m = Succ (plus n m)- pred :: Nat -> Nat- pred Zero = Zero- pred (Succ n) = n- - data Nat- where- Zero :: Nat- Succ :: Nat -> Nat- deriving (Eq, Show, Read) |]- ======>- data Nat- = Zero | Succ Nat- deriving (Eq, Show, Read)- plus :: Nat -> Nat -> Nat- plus Zero m = m- plus (Succ n) m = Succ (plus n m)- pred :: Nat -> Nat- pred Zero = Zero- pred (Succ n) = n- type family Equals_0123456789 (a :: Nat) (b :: Nat) :: Bool where- Equals_0123456789 Zero Zero = TrueSym0- Equals_0123456789 (Succ a) (Succ b) = (:==) a b- Equals_0123456789 (a :: Nat) (b :: Nat) = FalseSym0- instance PEq (KProxy :: KProxy Nat) where- type (:==) (a :: Nat) (b :: Nat) = Equals_0123456789 a b- type ZeroSym0 = Zero- type SuccSym1 (t :: Nat) = Succ t- instance SuppressUnusedWarnings SuccSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) SuccSym0KindInference GHC.Tuple.())- data SuccSym0 (l :: TyFun Nat Nat)- = forall arg. KindOf (Apply SuccSym0 arg) ~ KindOf (SuccSym1 arg) =>- SuccSym0KindInference- type instance Apply SuccSym0 l = SuccSym1 l- type PredSym1 (t :: Nat) = Pred t- instance SuppressUnusedWarnings PredSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) PredSym0KindInference GHC.Tuple.())- data PredSym0 (l :: TyFun Nat Nat)- = forall arg. KindOf (Apply PredSym0 arg) ~ KindOf (PredSym1 arg) =>- PredSym0KindInference- type instance Apply PredSym0 l = PredSym1 l- type PlusSym2 (t :: Nat) (t :: Nat) = Plus t t- instance SuppressUnusedWarnings PlusSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) PlusSym1KindInference GHC.Tuple.())- data PlusSym1 (l :: Nat) (l :: TyFun Nat Nat)- = forall arg. KindOf (Apply (PlusSym1 l) arg) ~ KindOf (PlusSym2 l arg) =>- PlusSym1KindInference- type instance Apply (PlusSym1 l) l = PlusSym2 l l- instance SuppressUnusedWarnings PlusSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) PlusSym0KindInference GHC.Tuple.())- data PlusSym0 (l :: TyFun Nat (TyFun Nat Nat -> *))- = forall arg. KindOf (Apply PlusSym0 arg) ~ KindOf (PlusSym1 arg) =>- PlusSym0KindInference- type instance Apply PlusSym0 l = PlusSym1 l- type family Pred (a :: Nat) :: Nat where- Pred Zero = ZeroSym0- Pred (Succ n) = n- type family Plus (a :: Nat) (a :: Nat) :: Nat where- Plus Zero m = m- Plus (Succ n) m = Apply SuccSym0 (Apply (Apply PlusSym0 n) m)- sPred ::- forall (t :: Nat). Sing t -> Sing (Apply PredSym0 t :: Nat)- sPlus ::- forall (t :: Nat) (t :: Nat).- Sing t -> Sing t -> Sing (Apply (Apply PlusSym0 t) t :: Nat)- sPred SZero- = let- lambda :: t ~ ZeroSym0 => Sing (Apply PredSym0 t :: Nat)- lambda = SZero- in lambda- sPred (SSucc sN)- = let- lambda ::- forall n. t ~ Apply SuccSym0 n =>- Sing n -> Sing (Apply PredSym0 t :: Nat)- lambda n = n- in lambda sN- sPlus SZero sM- = let- lambda ::- forall m. (t ~ ZeroSym0, t ~ m) =>- Sing m -> Sing (Apply (Apply PlusSym0 t) t :: Nat)- lambda m = m- in lambda sM- sPlus (SSucc sN) sM- = let- lambda ::- forall n m. (t ~ Apply SuccSym0 n, t ~ m) =>- Sing n -> Sing m -> Sing (Apply (Apply PlusSym0 t) t :: Nat)- lambda n m- = applySing- (singFun1 (Proxy :: Proxy SuccSym0) SSucc)- (applySing- (applySing (singFun2 (Proxy :: Proxy PlusSym0) sPlus) n) m)- in lambda sN sM- data instance Sing (z :: Nat)- = z ~ Zero => SZero |- forall (n :: Nat). z ~ Succ n => SSucc (Sing (n :: Nat))- type SNat = (Sing :: Nat -> *)- instance SingKind (KProxy :: KProxy Nat) where- type DemoteRep (KProxy :: KProxy Nat) = Nat- fromSing SZero = Zero- fromSing (SSucc b) = Succ (fromSing b)- toSing Zero = SomeSing SZero- toSing (Succ b)- = case toSing b :: SomeSing (KProxy :: KProxy Nat) of {- SomeSing c -> SomeSing (SSucc c) }- instance SEq (KProxy :: KProxy Nat) where- (%:==) SZero SZero = STrue- (%:==) SZero (SSucc _) = SFalse- (%:==) (SSucc _) SZero = SFalse- (%:==) (SSucc a) (SSucc b) = (%:==) a b- instance SDecide (KProxy :: KProxy Nat) where- (%~) SZero SZero = Proved Refl- (%~) SZero (SSucc _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SSucc _) SZero- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SSucc a) (SSucc b)- = case (%~) a b of {- Proved Refl -> Proved Refl- Disproved contra- -> Disproved (\ refl -> case refl of { Refl -> contra Refl }) }- instance SingI Zero where- sing = SZero- instance SingI n => SingI (Succ (n :: Nat)) where- sing = SSucc sing
tests/compile-and-dump/Singletons/Nat.ghc80.template view
@@ -28,7 +28,7 @@ Equals_0123456789 Zero Zero = TrueSym0 Equals_0123456789 (Succ a) (Succ b) = (:==) a b Equals_0123456789 (a :: Nat) (b :: Nat) = FalseSym0- instance PEq (KProxy :: KProxy Nat) where+ instance PEq (Proxy :: Proxy Nat) where type (:==) (a :: Nat) (b :: Nat) = Equals_0123456789 a b type ZeroSym0 = Zero type SuccSym1 (t :: Nat) = Succ t@@ -109,20 +109,20 @@ = z ~ Zero => SZero | forall (n :: Nat). z ~ Succ n => SSucc (Sing (n :: Nat)) type SNat = (Sing :: Nat -> GHC.Types.Type)- instance SingKind (KProxy :: KProxy Nat) where- type DemoteRep (KProxy :: KProxy Nat) = Nat+ instance SingKind Nat where+ type DemoteRep Nat = Nat fromSing SZero = Zero fromSing (SSucc b) = Succ (fromSing b) toSing Zero = SomeSing SZero toSing (Succ b)- = case toSing b :: SomeSing (KProxy :: KProxy Nat) of {+ = case toSing b :: SomeSing Nat of { SomeSing c -> SomeSing (SSucc c) }- instance SEq (KProxy :: KProxy Nat) where+ instance SEq Nat where (%:==) SZero SZero = STrue (%:==) SZero (SSucc _) = SFalse (%:==) (SSucc _) SZero = SFalse (%:==) (SSucc a) (SSucc b) = (%:==) a b- instance SDecide (KProxy :: KProxy Nat) where+ instance SDecide Nat where (%~) SZero SZero = Proved Refl (%~) SZero (SSucc _) = Disproved
− tests/compile-and-dump/Singletons/Operators.ghc710.template
@@ -1,122 +0,0 @@-Singletons/Operators.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| child :: Foo -> Foo- child FLeaf = FLeaf- child (a :+: _) = a- (+) :: Nat -> Nat -> Nat- Zero + m = m- (Succ n) + m = Succ (n + m)- - data Foo- where- FLeaf :: Foo- :+: :: Foo -> Foo -> Foo |]- ======>- data Foo = FLeaf | :+: Foo Foo- child :: Foo -> Foo- child FLeaf = FLeaf- child (a :+: _) = a- (+) :: Nat -> Nat -> Nat- (+) Zero m = m- (+) (Succ n) m = Succ (n + m)- type FLeafSym0 = FLeaf- type (:+:$$$) (t :: Foo) (t :: Foo) = (:+:) t t- instance SuppressUnusedWarnings (:+:$$) where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) (:+:$$###) GHC.Tuple.())- data (:+:$$) (l :: Foo) (l :: TyFun Foo Foo)- = forall arg. KindOf (Apply ((:+:$$) l) arg) ~ KindOf ((:+:$$$) l arg) =>- :+:$$###- type instance Apply ((:+:$$) l) l = (:+:$$$) l l- instance SuppressUnusedWarnings (:+:$) where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) (:+:$###) GHC.Tuple.())- data (:+:$) (l :: TyFun Foo (TyFun Foo Foo -> *))- = forall arg. KindOf (Apply (:+:$) arg) ~ KindOf ((:+:$$) arg) =>- :+:$###- type instance Apply (:+:$) l = (:+:$$) l- type (:+$$$) (t :: Nat) (t :: Nat) = (:+) t t- instance SuppressUnusedWarnings (:+$$) where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) (:+$$###) GHC.Tuple.())- data (:+$$) (l :: Nat) (l :: TyFun Nat Nat)- = forall arg. KindOf (Apply ((:+$$) l) arg) ~ KindOf ((:+$$$) l arg) =>- :+$$###- type instance Apply ((:+$$) l) l = (:+$$$) l l- instance SuppressUnusedWarnings (:+$) where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) (:+$###) GHC.Tuple.())- data (:+$) (l :: TyFun Nat (TyFun Nat Nat -> *))- = forall arg. KindOf (Apply (:+$) arg) ~ KindOf ((:+$$) arg) =>- :+$###- type instance Apply (:+$) l = (:+$$) l- type ChildSym1 (t :: Foo) = Child t- instance SuppressUnusedWarnings ChildSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) ChildSym0KindInference GHC.Tuple.())- data ChildSym0 (l :: TyFun Foo Foo)- = forall arg. KindOf (Apply ChildSym0 arg) ~ KindOf (ChildSym1 arg) =>- ChildSym0KindInference- type instance Apply ChildSym0 l = ChildSym1 l- type family (:+) (a :: Nat) (a :: Nat) :: Nat where- (:+) Zero m = m- (:+) (Succ n) m = Apply SuccSym0 (Apply (Apply (:+$) n) m)- type family Child (a :: Foo) :: Foo where- Child FLeaf = FLeafSym0- Child ((:+:) a _z_0123456789) = a- (%:+) ::- forall (t :: Nat) (t :: Nat).- Sing t -> Sing t -> Sing (Apply (Apply (:+$) t) t :: Nat)- sChild ::- forall (t :: Foo). Sing t -> Sing (Apply ChildSym0 t :: Foo)- (%:+) SZero sM- = let- lambda ::- forall m. (t ~ ZeroSym0, t ~ m) =>- Sing m -> Sing (Apply (Apply (:+$) t) t :: Nat)- lambda m = m- in lambda sM- (%:+) (SSucc sN) sM- = let- lambda ::- forall n m. (t ~ Apply SuccSym0 n, t ~ m) =>- Sing n -> Sing m -> Sing (Apply (Apply (:+$) t) t :: Nat)- lambda n m- = applySing- (singFun1 (Proxy :: Proxy SuccSym0) SSucc)- (applySing (applySing (singFun2 (Proxy :: Proxy (:+$)) (%:+)) n) m)- in lambda sN sM- sChild SFLeaf- = let- lambda :: t ~ FLeafSym0 => Sing (Apply ChildSym0 t :: Foo)- lambda = SFLeaf- in lambda- sChild ((:%+:) sA _s_z_0123456789)- = let- lambda ::- forall a _z_0123456789. t ~ Apply (Apply (:+:$) a) _z_0123456789 =>- Sing a -> Sing _z_0123456789 -> Sing (Apply ChildSym0 t :: Foo)- lambda a _z_0123456789 = a- in lambda sA _s_z_0123456789- data instance Sing (z :: Foo)- = z ~ FLeaf => SFLeaf |- forall (n :: Foo) (n :: Foo). z ~ (:+:) n n =>- :%+: (Sing (n :: Foo)) (Sing (n :: Foo))- type SFoo = (Sing :: Foo -> *)- instance SingKind (KProxy :: KProxy Foo) where- type DemoteRep (KProxy :: KProxy Foo) = Foo- fromSing SFLeaf = FLeaf- fromSing ((:%+:) b b) = (:+:) (fromSing b) (fromSing b)- toSing FLeaf = SomeSing SFLeaf- toSing ((:+:) b b)- = case- GHC.Tuple.(,)- (toSing b :: SomeSing (KProxy :: KProxy Foo))- (toSing b :: SomeSing (KProxy :: KProxy Foo))- of {- GHC.Tuple.(,) (SomeSing c) (SomeSing c) -> SomeSing ((:%+:) c c) }- instance SingI FLeaf where- sing = SFLeaf- instance (SingI n, SingI n) =>- SingI ((:+:) (n :: Foo) (n :: Foo)) where- sing = (:%+:) sing sing
tests/compile-and-dump/Singletons/Operators.ghc80.template view
@@ -109,16 +109,14 @@ forall (n :: Foo) (n :: Foo). z ~ (:+:) n n => (:%+:) (Sing (n :: Foo)) (Sing (n :: Foo)) type SFoo = (Sing :: Foo -> GHC.Types.Type)- instance SingKind (KProxy :: KProxy Foo) where- type DemoteRep (KProxy :: KProxy Foo) = Foo+ instance SingKind Foo where+ type DemoteRep Foo = Foo fromSing SFLeaf = FLeaf fromSing ((:%+:) b b) = (:+:) (fromSing b) (fromSing b) toSing FLeaf = SomeSing SFLeaf toSing ((:+:) b b) = case- GHC.Tuple.(,)- (toSing b :: SomeSing (KProxy :: KProxy Foo))- (toSing b :: SomeSing (KProxy :: KProxy Foo))+ GHC.Tuple.(,) (toSing b :: SomeSing Foo) (toSing b :: SomeSing Foo) of { GHC.Tuple.(,) (SomeSing c) (SomeSing c) -> SomeSing ((:%+:) c c) } instance SingI FLeaf where
− tests/compile-and-dump/Singletons/OrdDeriving.ghc710.template
@@ -1,2891 +0,0 @@-Singletons/OrdDeriving.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| data Nat- = Zero | Succ Nat- deriving (Eq, Ord)- data Foo a b c d- = A a b c d |- B a b c d |- C a b c d |- D a b c d |- E a b c d |- F a b c d- deriving (Eq, Ord) |]- ======>- data Nat- = Zero | Succ Nat- deriving (Eq, Ord)- data Foo a b c d- = A a b c d |- B a b c d |- C a b c d |- D a b c d |- E a b c d |- F a b c d- deriving (Eq, Ord)- type family Equals_0123456789 (a :: Nat) (b :: Nat) :: Bool where- Equals_0123456789 Zero Zero = TrueSym0- Equals_0123456789 (Succ a) (Succ b) = (:==) a b- Equals_0123456789 (a :: Nat) (b :: Nat) = FalseSym0- instance PEq (KProxy :: KProxy Nat) where- type (:==) (a :: Nat) (b :: Nat) = Equals_0123456789 a b- type ZeroSym0 = Zero- type SuccSym1 (t :: Nat) = Succ t- instance SuppressUnusedWarnings SuccSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) SuccSym0KindInference GHC.Tuple.())- data SuccSym0 (l :: TyFun Nat Nat)- = forall arg. KindOf (Apply SuccSym0 arg) ~ KindOf (SuccSym1 arg) =>- SuccSym0KindInference- type instance Apply SuccSym0 l = SuccSym1 l- type family Equals_0123456789 (a :: Foo k k k k)- (b :: Foo k k k k) :: Bool where- Equals_0123456789 (A a a a a) (A b b b b) = (:&&) ((:==) a b) ((:&&) ((:==) a b) ((:&&) ((:==) a b) ((:==) a b)))- Equals_0123456789 (B a a a a) (B b b b b) = (:&&) ((:==) a b) ((:&&) ((:==) a b) ((:&&) ((:==) a b) ((:==) a b)))- Equals_0123456789 (C a a a a) (C b b b b) = (:&&) ((:==) a b) ((:&&) ((:==) a b) ((:&&) ((:==) a b) ((:==) a b)))- Equals_0123456789 (D a a a a) (D b b b b) = (:&&) ((:==) a b) ((:&&) ((:==) a b) ((:&&) ((:==) a b) ((:==) a b)))- Equals_0123456789 (E a a a a) (E b b b b) = (:&&) ((:==) a b) ((:&&) ((:==) a b) ((:&&) ((:==) a b) ((:==) a b)))- Equals_0123456789 (F a a a a) (F b b b b) = (:&&) ((:==) a b) ((:&&) ((:==) a b) ((:&&) ((:==) a b) ((:==) a b)))- Equals_0123456789 (a :: Foo k k k k) (b :: Foo k k k k) = FalseSym0- instance PEq (KProxy :: KProxy (Foo k k k k)) where- type (:==) (a :: Foo k k k k) (b :: Foo k k k k) = Equals_0123456789 a b- type ASym4 (t :: a0123456789)- (t :: b0123456789)- (t :: c0123456789)- (t :: d0123456789) =- A t t t t- instance SuppressUnusedWarnings ASym3 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) ASym3KindInference GHC.Tuple.())- data ASym3 (l :: a0123456789)- (l :: b0123456789)- (l :: c0123456789)- (l :: TyFun d0123456789 (Foo a0123456789 b0123456789 c0123456789 d0123456789))- = forall arg. KindOf (Apply (ASym3 l l l) arg) ~ KindOf (ASym4 l l l arg) =>- ASym3KindInference- type instance Apply (ASym3 l l l) l = ASym4 l l l l- instance SuppressUnusedWarnings ASym2 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) ASym2KindInference GHC.Tuple.())- data ASym2 (l :: a0123456789)- (l :: b0123456789)- (l :: TyFun c0123456789 (TyFun d0123456789 (Foo a0123456789 b0123456789 c0123456789 d0123456789)- -> *))- = forall arg. KindOf (Apply (ASym2 l l) arg) ~ KindOf (ASym3 l l arg) =>- ASym2KindInference- type instance Apply (ASym2 l l) l = ASym3 l l l- instance SuppressUnusedWarnings ASym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) ASym1KindInference GHC.Tuple.())- data ASym1 (l :: a0123456789)- (l :: TyFun b0123456789 (TyFun c0123456789 (TyFun d0123456789 (Foo a0123456789 b0123456789 c0123456789 d0123456789)- -> *)- -> *))- = forall arg. KindOf (Apply (ASym1 l) arg) ~ KindOf (ASym2 l arg) =>- ASym1KindInference- type instance Apply (ASym1 l) l = ASym2 l l- instance SuppressUnusedWarnings ASym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) ASym0KindInference GHC.Tuple.())- data ASym0 (l :: TyFun a0123456789 (TyFun b0123456789 (TyFun c0123456789 (TyFun d0123456789 (Foo a0123456789 b0123456789 c0123456789 d0123456789)- -> *)- -> *)- -> *))- = forall arg. KindOf (Apply ASym0 arg) ~ KindOf (ASym1 arg) =>- ASym0KindInference- type instance Apply ASym0 l = ASym1 l- type BSym4 (t :: a0123456789)- (t :: b0123456789)- (t :: c0123456789)- (t :: d0123456789) =- B t t t t- instance SuppressUnusedWarnings BSym3 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) BSym3KindInference GHC.Tuple.())- data BSym3 (l :: a0123456789)- (l :: b0123456789)- (l :: c0123456789)- (l :: TyFun d0123456789 (Foo a0123456789 b0123456789 c0123456789 d0123456789))- = forall arg. KindOf (Apply (BSym3 l l l) arg) ~ KindOf (BSym4 l l l arg) =>- BSym3KindInference- type instance Apply (BSym3 l l l) l = BSym4 l l l l- instance SuppressUnusedWarnings BSym2 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) BSym2KindInference GHC.Tuple.())- data BSym2 (l :: a0123456789)- (l :: b0123456789)- (l :: TyFun c0123456789 (TyFun d0123456789 (Foo a0123456789 b0123456789 c0123456789 d0123456789)- -> *))- = forall arg. KindOf (Apply (BSym2 l l) arg) ~ KindOf (BSym3 l l arg) =>- BSym2KindInference- type instance Apply (BSym2 l l) l = BSym3 l l l- instance SuppressUnusedWarnings BSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) BSym1KindInference GHC.Tuple.())- data BSym1 (l :: a0123456789)- (l :: TyFun b0123456789 (TyFun c0123456789 (TyFun d0123456789 (Foo a0123456789 b0123456789 c0123456789 d0123456789)- -> *)- -> *))- = forall arg. KindOf (Apply (BSym1 l) arg) ~ KindOf (BSym2 l arg) =>- BSym1KindInference- type instance Apply (BSym1 l) l = BSym2 l l- instance SuppressUnusedWarnings BSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) BSym0KindInference GHC.Tuple.())- data BSym0 (l :: TyFun a0123456789 (TyFun b0123456789 (TyFun c0123456789 (TyFun d0123456789 (Foo a0123456789 b0123456789 c0123456789 d0123456789)- -> *)- -> *)- -> *))- = forall arg. KindOf (Apply BSym0 arg) ~ KindOf (BSym1 arg) =>- BSym0KindInference- type instance Apply BSym0 l = BSym1 l- type CSym4 (t :: a0123456789)- (t :: b0123456789)- (t :: c0123456789)- (t :: d0123456789) =- C t t t t- instance SuppressUnusedWarnings CSym3 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) CSym3KindInference GHC.Tuple.())- data CSym3 (l :: a0123456789)- (l :: b0123456789)- (l :: c0123456789)- (l :: TyFun d0123456789 (Foo a0123456789 b0123456789 c0123456789 d0123456789))- = forall arg. KindOf (Apply (CSym3 l l l) arg) ~ KindOf (CSym4 l l l arg) =>- CSym3KindInference- type instance Apply (CSym3 l l l) l = CSym4 l l l l- instance SuppressUnusedWarnings CSym2 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) CSym2KindInference GHC.Tuple.())- data CSym2 (l :: a0123456789)- (l :: b0123456789)- (l :: TyFun c0123456789 (TyFun d0123456789 (Foo a0123456789 b0123456789 c0123456789 d0123456789)- -> *))- = forall arg. KindOf (Apply (CSym2 l l) arg) ~ KindOf (CSym3 l l arg) =>- CSym2KindInference- type instance Apply (CSym2 l l) l = CSym3 l l l- instance SuppressUnusedWarnings CSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) CSym1KindInference GHC.Tuple.())- data CSym1 (l :: a0123456789)- (l :: TyFun b0123456789 (TyFun c0123456789 (TyFun d0123456789 (Foo a0123456789 b0123456789 c0123456789 d0123456789)- -> *)- -> *))- = forall arg. KindOf (Apply (CSym1 l) arg) ~ KindOf (CSym2 l arg) =>- CSym1KindInference- type instance Apply (CSym1 l) l = CSym2 l l- instance SuppressUnusedWarnings CSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) CSym0KindInference GHC.Tuple.())- data CSym0 (l :: TyFun a0123456789 (TyFun b0123456789 (TyFun c0123456789 (TyFun d0123456789 (Foo a0123456789 b0123456789 c0123456789 d0123456789)- -> *)- -> *)- -> *))- = forall arg. KindOf (Apply CSym0 arg) ~ KindOf (CSym1 arg) =>- CSym0KindInference- type instance Apply CSym0 l = CSym1 l- type DSym4 (t :: a0123456789)- (t :: b0123456789)- (t :: c0123456789)- (t :: d0123456789) =- D t t t t- instance SuppressUnusedWarnings DSym3 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) DSym3KindInference GHC.Tuple.())- data DSym3 (l :: a0123456789)- (l :: b0123456789)- (l :: c0123456789)- (l :: TyFun d0123456789 (Foo a0123456789 b0123456789 c0123456789 d0123456789))- = forall arg. KindOf (Apply (DSym3 l l l) arg) ~ KindOf (DSym4 l l l arg) =>- DSym3KindInference- type instance Apply (DSym3 l l l) l = DSym4 l l l l- instance SuppressUnusedWarnings DSym2 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) DSym2KindInference GHC.Tuple.())- data DSym2 (l :: a0123456789)- (l :: b0123456789)- (l :: TyFun c0123456789 (TyFun d0123456789 (Foo a0123456789 b0123456789 c0123456789 d0123456789)- -> *))- = forall arg. KindOf (Apply (DSym2 l l) arg) ~ KindOf (DSym3 l l arg) =>- DSym2KindInference- type instance Apply (DSym2 l l) l = DSym3 l l l- instance SuppressUnusedWarnings DSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) DSym1KindInference GHC.Tuple.())- data DSym1 (l :: a0123456789)- (l :: TyFun b0123456789 (TyFun c0123456789 (TyFun d0123456789 (Foo a0123456789 b0123456789 c0123456789 d0123456789)- -> *)- -> *))- = forall arg. KindOf (Apply (DSym1 l) arg) ~ KindOf (DSym2 l arg) =>- DSym1KindInference- type instance Apply (DSym1 l) l = DSym2 l l- instance SuppressUnusedWarnings DSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) DSym0KindInference GHC.Tuple.())- data DSym0 (l :: TyFun a0123456789 (TyFun b0123456789 (TyFun c0123456789 (TyFun d0123456789 (Foo a0123456789 b0123456789 c0123456789 d0123456789)- -> *)- -> *)- -> *))- = forall arg. KindOf (Apply DSym0 arg) ~ KindOf (DSym1 arg) =>- DSym0KindInference- type instance Apply DSym0 l = DSym1 l- type ESym4 (t :: a0123456789)- (t :: b0123456789)- (t :: c0123456789)- (t :: d0123456789) =- E t t t t- instance SuppressUnusedWarnings ESym3 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) ESym3KindInference GHC.Tuple.())- data ESym3 (l :: a0123456789)- (l :: b0123456789)- (l :: c0123456789)- (l :: TyFun d0123456789 (Foo a0123456789 b0123456789 c0123456789 d0123456789))- = forall arg. KindOf (Apply (ESym3 l l l) arg) ~ KindOf (ESym4 l l l arg) =>- ESym3KindInference- type instance Apply (ESym3 l l l) l = ESym4 l l l l- instance SuppressUnusedWarnings ESym2 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) ESym2KindInference GHC.Tuple.())- data ESym2 (l :: a0123456789)- (l :: b0123456789)- (l :: TyFun c0123456789 (TyFun d0123456789 (Foo a0123456789 b0123456789 c0123456789 d0123456789)- -> *))- = forall arg. KindOf (Apply (ESym2 l l) arg) ~ KindOf (ESym3 l l arg) =>- ESym2KindInference- type instance Apply (ESym2 l l) l = ESym3 l l l- instance SuppressUnusedWarnings ESym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) ESym1KindInference GHC.Tuple.())- data ESym1 (l :: a0123456789)- (l :: TyFun b0123456789 (TyFun c0123456789 (TyFun d0123456789 (Foo a0123456789 b0123456789 c0123456789 d0123456789)- -> *)- -> *))- = forall arg. KindOf (Apply (ESym1 l) arg) ~ KindOf (ESym2 l arg) =>- ESym1KindInference- type instance Apply (ESym1 l) l = ESym2 l l- instance SuppressUnusedWarnings ESym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) ESym0KindInference GHC.Tuple.())- data ESym0 (l :: TyFun a0123456789 (TyFun b0123456789 (TyFun c0123456789 (TyFun d0123456789 (Foo a0123456789 b0123456789 c0123456789 d0123456789)- -> *)- -> *)- -> *))- = forall arg. KindOf (Apply ESym0 arg) ~ KindOf (ESym1 arg) =>- ESym0KindInference- type instance Apply ESym0 l = ESym1 l- type FSym4 (t :: a0123456789)- (t :: b0123456789)- (t :: c0123456789)- (t :: d0123456789) =- F t t t t- instance SuppressUnusedWarnings FSym3 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) FSym3KindInference GHC.Tuple.())- data FSym3 (l :: a0123456789)- (l :: b0123456789)- (l :: c0123456789)- (l :: TyFun d0123456789 (Foo a0123456789 b0123456789 c0123456789 d0123456789))- = forall arg. KindOf (Apply (FSym3 l l l) arg) ~ KindOf (FSym4 l l l arg) =>- FSym3KindInference- type instance Apply (FSym3 l l l) l = FSym4 l l l l- instance SuppressUnusedWarnings FSym2 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) FSym2KindInference GHC.Tuple.())- data FSym2 (l :: a0123456789)- (l :: b0123456789)- (l :: TyFun c0123456789 (TyFun d0123456789 (Foo a0123456789 b0123456789 c0123456789 d0123456789)- -> *))- = forall arg. KindOf (Apply (FSym2 l l) arg) ~ KindOf (FSym3 l l arg) =>- FSym2KindInference- type instance Apply (FSym2 l l) l = FSym3 l l l- instance SuppressUnusedWarnings FSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) FSym1KindInference GHC.Tuple.())- data FSym1 (l :: a0123456789)- (l :: TyFun b0123456789 (TyFun c0123456789 (TyFun d0123456789 (Foo a0123456789 b0123456789 c0123456789 d0123456789)- -> *)- -> *))- = forall arg. KindOf (Apply (FSym1 l) arg) ~ KindOf (FSym2 l arg) =>- FSym1KindInference- type instance Apply (FSym1 l) l = FSym2 l l- instance SuppressUnusedWarnings FSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) FSym0KindInference GHC.Tuple.())- data FSym0 (l :: TyFun a0123456789 (TyFun b0123456789 (TyFun c0123456789 (TyFun d0123456789 (Foo a0123456789 b0123456789 c0123456789 d0123456789)- -> *)- -> *)- -> *))- = forall arg. KindOf (Apply FSym0 arg) ~ KindOf (FSym1 arg) =>- FSym0KindInference- type instance Apply FSym0 l = FSym1 l- type family Compare_0123456789 (a :: Nat)- (a :: Nat) :: Ordering where- Compare_0123456789 Zero Zero = Apply (Apply (Apply FoldlSym0 ThenCmpSym0) EQSym0) '[]- Compare_0123456789 (Succ a_0123456789) (Succ b_0123456789) = Apply (Apply (Apply FoldlSym0 ThenCmpSym0) EQSym0) (Apply (Apply (:$) (Apply (Apply CompareSym0 a_0123456789) b_0123456789)) '[])- Compare_0123456789 Zero (Succ _z_0123456789) = LTSym0- Compare_0123456789 (Succ _z_0123456789) Zero = GTSym0- type Compare_0123456789Sym2 (t :: Nat) (t :: Nat) =- Compare_0123456789 t t- instance SuppressUnusedWarnings Compare_0123456789Sym1 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Compare_0123456789Sym1KindInference GHC.Tuple.())- data Compare_0123456789Sym1 (l :: Nat) (l :: TyFun Nat Ordering)- = forall arg. KindOf (Apply (Compare_0123456789Sym1 l) arg) ~ KindOf (Compare_0123456789Sym2 l arg) =>- Compare_0123456789Sym1KindInference- type instance Apply (Compare_0123456789Sym1 l) l = Compare_0123456789Sym2 l l- instance SuppressUnusedWarnings Compare_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Compare_0123456789Sym0KindInference GHC.Tuple.())- data Compare_0123456789Sym0 (l :: TyFun Nat (TyFun Nat Ordering- -> *))- = forall arg. KindOf (Apply Compare_0123456789Sym0 arg) ~ KindOf (Compare_0123456789Sym1 arg) =>- Compare_0123456789Sym0KindInference- type instance Apply Compare_0123456789Sym0 l = Compare_0123456789Sym1 l- instance POrd (KProxy :: KProxy Nat) where- type Compare (a :: Nat) (a :: Nat) = Apply (Apply Compare_0123456789Sym0 a) a- type family Compare_0123456789 (a :: Foo a b c d)- (a :: Foo a b c d) :: Ordering where- Compare_0123456789 (A a_0123456789 a_0123456789 a_0123456789 a_0123456789) (A b_0123456789 b_0123456789 b_0123456789 b_0123456789) = Apply (Apply (Apply FoldlSym0 ThenCmpSym0) EQSym0) (Apply (Apply (:$) (Apply (Apply CompareSym0 a_0123456789) b_0123456789)) (Apply (Apply (:$) (Apply (Apply CompareSym0 a_0123456789) b_0123456789)) (Apply (Apply (:$) (Apply (Apply CompareSym0 a_0123456789) b_0123456789)) (Apply (Apply (:$) (Apply (Apply CompareSym0 a_0123456789) b_0123456789)) '[]))))- Compare_0123456789 (B a_0123456789 a_0123456789 a_0123456789 a_0123456789) (B b_0123456789 b_0123456789 b_0123456789 b_0123456789) = Apply (Apply (Apply FoldlSym0 ThenCmpSym0) EQSym0) (Apply (Apply (:$) (Apply (Apply CompareSym0 a_0123456789) b_0123456789)) (Apply (Apply (:$) (Apply (Apply CompareSym0 a_0123456789) b_0123456789)) (Apply (Apply (:$) (Apply (Apply CompareSym0 a_0123456789) b_0123456789)) (Apply (Apply (:$) (Apply (Apply CompareSym0 a_0123456789) b_0123456789)) '[]))))- Compare_0123456789 (C a_0123456789 a_0123456789 a_0123456789 a_0123456789) (C b_0123456789 b_0123456789 b_0123456789 b_0123456789) = Apply (Apply (Apply FoldlSym0 ThenCmpSym0) EQSym0) (Apply (Apply (:$) (Apply (Apply CompareSym0 a_0123456789) b_0123456789)) (Apply (Apply (:$) (Apply (Apply CompareSym0 a_0123456789) b_0123456789)) (Apply (Apply (:$) (Apply (Apply CompareSym0 a_0123456789) b_0123456789)) (Apply (Apply (:$) (Apply (Apply CompareSym0 a_0123456789) b_0123456789)) '[]))))- Compare_0123456789 (D a_0123456789 a_0123456789 a_0123456789 a_0123456789) (D b_0123456789 b_0123456789 b_0123456789 b_0123456789) = Apply (Apply (Apply FoldlSym0 ThenCmpSym0) EQSym0) (Apply (Apply (:$) (Apply (Apply CompareSym0 a_0123456789) b_0123456789)) (Apply (Apply (:$) (Apply (Apply CompareSym0 a_0123456789) b_0123456789)) (Apply (Apply (:$) (Apply (Apply CompareSym0 a_0123456789) b_0123456789)) (Apply (Apply (:$) (Apply (Apply CompareSym0 a_0123456789) b_0123456789)) '[]))))- Compare_0123456789 (E a_0123456789 a_0123456789 a_0123456789 a_0123456789) (E b_0123456789 b_0123456789 b_0123456789 b_0123456789) = Apply (Apply (Apply FoldlSym0 ThenCmpSym0) EQSym0) (Apply (Apply (:$) (Apply (Apply CompareSym0 a_0123456789) b_0123456789)) (Apply (Apply (:$) (Apply (Apply CompareSym0 a_0123456789) b_0123456789)) (Apply (Apply (:$) (Apply (Apply CompareSym0 a_0123456789) b_0123456789)) (Apply (Apply (:$) (Apply (Apply CompareSym0 a_0123456789) b_0123456789)) '[]))))- Compare_0123456789 (F a_0123456789 a_0123456789 a_0123456789 a_0123456789) (F b_0123456789 b_0123456789 b_0123456789 b_0123456789) = Apply (Apply (Apply FoldlSym0 ThenCmpSym0) EQSym0) (Apply (Apply (:$) (Apply (Apply CompareSym0 a_0123456789) b_0123456789)) (Apply (Apply (:$) (Apply (Apply CompareSym0 a_0123456789) b_0123456789)) (Apply (Apply (:$) (Apply (Apply CompareSym0 a_0123456789) b_0123456789)) (Apply (Apply (:$) (Apply (Apply CompareSym0 a_0123456789) b_0123456789)) '[]))))- Compare_0123456789 (A _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) (B _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) = LTSym0- Compare_0123456789 (A _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) (C _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) = LTSym0- Compare_0123456789 (A _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) (D _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) = LTSym0- Compare_0123456789 (A _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) (E _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) = LTSym0- Compare_0123456789 (A _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) (F _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) = LTSym0- Compare_0123456789 (B _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) (A _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) = GTSym0- Compare_0123456789 (B _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) (C _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) = LTSym0- Compare_0123456789 (B _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) (D _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) = LTSym0- Compare_0123456789 (B _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) (E _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) = LTSym0- Compare_0123456789 (B _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) (F _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) = LTSym0- Compare_0123456789 (C _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) (A _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) = GTSym0- Compare_0123456789 (C _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) (B _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) = GTSym0- Compare_0123456789 (C _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) (D _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) = LTSym0- Compare_0123456789 (C _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) (E _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) = LTSym0- Compare_0123456789 (C _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) (F _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) = LTSym0- Compare_0123456789 (D _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) (A _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) = GTSym0- Compare_0123456789 (D _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) (B _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) = GTSym0- Compare_0123456789 (D _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) (C _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) = GTSym0- Compare_0123456789 (D _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) (E _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) = LTSym0- Compare_0123456789 (D _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) (F _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) = LTSym0- Compare_0123456789 (E _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) (A _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) = GTSym0- Compare_0123456789 (E _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) (B _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) = GTSym0- Compare_0123456789 (E _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) (C _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) = GTSym0- Compare_0123456789 (E _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) (D _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) = GTSym0- Compare_0123456789 (E _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) (F _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) = LTSym0- Compare_0123456789 (F _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) (A _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) = GTSym0- Compare_0123456789 (F _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) (B _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) = GTSym0- Compare_0123456789 (F _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) (C _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) = GTSym0- Compare_0123456789 (F _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) (D _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) = GTSym0- Compare_0123456789 (F _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) (E _z_0123456789 _z_0123456789 _z_0123456789 _z_0123456789) = GTSym0- type Compare_0123456789Sym2 (t :: Foo a0123456789 b0123456789 c0123456789 d0123456789)- (t :: Foo a0123456789 b0123456789 c0123456789 d0123456789) =- Compare_0123456789 t t- instance SuppressUnusedWarnings Compare_0123456789Sym1 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Compare_0123456789Sym1KindInference GHC.Tuple.())- data Compare_0123456789Sym1 (l :: Foo a0123456789 b0123456789 c0123456789 d0123456789)- (l :: TyFun (Foo a0123456789 b0123456789 c0123456789 d0123456789) Ordering)- = forall arg. KindOf (Apply (Compare_0123456789Sym1 l) arg) ~ KindOf (Compare_0123456789Sym2 l arg) =>- Compare_0123456789Sym1KindInference- type instance Apply (Compare_0123456789Sym1 l) l = Compare_0123456789Sym2 l l- instance SuppressUnusedWarnings Compare_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Compare_0123456789Sym0KindInference GHC.Tuple.())- data Compare_0123456789Sym0 (l :: TyFun (Foo a0123456789 b0123456789 c0123456789 d0123456789) (TyFun (Foo a0123456789 b0123456789 c0123456789 d0123456789) Ordering- -> *))- = forall arg. KindOf (Apply Compare_0123456789Sym0 arg) ~ KindOf (Compare_0123456789Sym1 arg) =>- Compare_0123456789Sym0KindInference- type instance Apply Compare_0123456789Sym0 l = Compare_0123456789Sym1 l- instance POrd (KProxy :: KProxy (Foo a b c d)) where- type Compare (a :: Foo a b c d) (a :: Foo a b c d) = Apply (Apply Compare_0123456789Sym0 a) a- data instance Sing (z :: Nat)- = z ~ Zero => SZero |- forall (n :: Nat). z ~ Succ n => SSucc (Sing (n :: Nat))- type SNat = (Sing :: Nat -> *)- instance SingKind (KProxy :: KProxy Nat) where- type DemoteRep (KProxy :: KProxy Nat) = Nat- fromSing SZero = Zero- fromSing (SSucc b) = Succ (fromSing b)- toSing Zero = SomeSing SZero- toSing (Succ b)- = case toSing b :: SomeSing (KProxy :: KProxy Nat) of {- SomeSing c -> SomeSing (SSucc c) }- instance SEq (KProxy :: KProxy Nat) where- (%:==) SZero SZero = STrue- (%:==) SZero (SSucc _) = SFalse- (%:==) (SSucc _) SZero = SFalse- (%:==) (SSucc a) (SSucc b) = (%:==) a b- instance SDecide (KProxy :: KProxy Nat) where- (%~) SZero SZero = Proved Refl- (%~) SZero (SSucc _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SSucc _) SZero- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SSucc a) (SSucc b)- = case (%~) a b of {- Proved Refl -> Proved Refl- Disproved contra- -> Disproved (\ refl -> case refl of { Refl -> contra Refl }) }- data instance Sing (z :: Foo a b c d)- = forall (n :: a) (n :: b) (n :: c) (n :: d). z ~ A n n n n =>- SA (Sing (n :: a)) (Sing (n :: b)) (Sing (n :: c)) (Sing (n :: d)) |- forall (n :: a) (n :: b) (n :: c) (n :: d). z ~ B n n n n =>- SB (Sing (n :: a)) (Sing (n :: b)) (Sing (n :: c)) (Sing (n :: d)) |- forall (n :: a) (n :: b) (n :: c) (n :: d). z ~ C n n n n =>- SC (Sing (n :: a)) (Sing (n :: b)) (Sing (n :: c)) (Sing (n :: d)) |- forall (n :: a) (n :: b) (n :: c) (n :: d). z ~ D n n n n =>- SD (Sing (n :: a)) (Sing (n :: b)) (Sing (n :: c)) (Sing (n :: d)) |- forall (n :: a) (n :: b) (n :: c) (n :: d). z ~ E n n n n =>- SE (Sing (n :: a)) (Sing (n :: b)) (Sing (n :: c)) (Sing (n :: d)) |- forall (n :: a) (n :: b) (n :: c) (n :: d). z ~ F n n n n =>- SF (Sing (n :: a)) (Sing (n :: b)) (Sing (n :: c)) (Sing (n :: d))- type SFoo = (Sing :: Foo a b c d -> *)- instance (SingKind (KProxy :: KProxy a),- SingKind (KProxy :: KProxy b),- SingKind (KProxy :: KProxy c),- SingKind (KProxy :: KProxy d)) =>- SingKind (KProxy :: KProxy (Foo a b c d)) where- type DemoteRep (KProxy :: KProxy (Foo a b c d)) = Foo (DemoteRep (KProxy :: KProxy a)) (DemoteRep (KProxy :: KProxy b)) (DemoteRep (KProxy :: KProxy c)) (DemoteRep (KProxy :: KProxy d))- fromSing (SA b b b b)- = A (fromSing b) (fromSing b) (fromSing b) (fromSing b)- fromSing (SB b b b b)- = B (fromSing b) (fromSing b) (fromSing b) (fromSing b)- fromSing (SC b b b b)- = C (fromSing b) (fromSing b) (fromSing b) (fromSing b)- fromSing (SD b b b b)- = D (fromSing b) (fromSing b) (fromSing b) (fromSing b)- fromSing (SE b b b b)- = E (fromSing b) (fromSing b) (fromSing b) (fromSing b)- fromSing (SF b b b b)- = F (fromSing b) (fromSing b) (fromSing b) (fromSing b)- toSing (A b b b b)- = case- GHC.Tuple.(,,,)- (toSing b :: SomeSing (KProxy :: KProxy a))- (toSing b :: SomeSing (KProxy :: KProxy b))- (toSing b :: SomeSing (KProxy :: KProxy c))- (toSing b :: SomeSing (KProxy :: KProxy d))- of {- GHC.Tuple.(,,,) (SomeSing c) (SomeSing c) (SomeSing c) (SomeSing c)- -> SomeSing (SA c c c c) }- toSing (B b b b b)- = case- GHC.Tuple.(,,,)- (toSing b :: SomeSing (KProxy :: KProxy a))- (toSing b :: SomeSing (KProxy :: KProxy b))- (toSing b :: SomeSing (KProxy :: KProxy c))- (toSing b :: SomeSing (KProxy :: KProxy d))- of {- GHC.Tuple.(,,,) (SomeSing c) (SomeSing c) (SomeSing c) (SomeSing c)- -> SomeSing (SB c c c c) }- toSing (C b b b b)- = case- GHC.Tuple.(,,,)- (toSing b :: SomeSing (KProxy :: KProxy a))- (toSing b :: SomeSing (KProxy :: KProxy b))- (toSing b :: SomeSing (KProxy :: KProxy c))- (toSing b :: SomeSing (KProxy :: KProxy d))- of {- GHC.Tuple.(,,,) (SomeSing c) (SomeSing c) (SomeSing c) (SomeSing c)- -> SomeSing (SC c c c c) }- toSing (D b b b b)- = case- GHC.Tuple.(,,,)- (toSing b :: SomeSing (KProxy :: KProxy a))- (toSing b :: SomeSing (KProxy :: KProxy b))- (toSing b :: SomeSing (KProxy :: KProxy c))- (toSing b :: SomeSing (KProxy :: KProxy d))- of {- GHC.Tuple.(,,,) (SomeSing c) (SomeSing c) (SomeSing c) (SomeSing c)- -> SomeSing (SD c c c c) }- toSing (E b b b b)- = case- GHC.Tuple.(,,,)- (toSing b :: SomeSing (KProxy :: KProxy a))- (toSing b :: SomeSing (KProxy :: KProxy b))- (toSing b :: SomeSing (KProxy :: KProxy c))- (toSing b :: SomeSing (KProxy :: KProxy d))- of {- GHC.Tuple.(,,,) (SomeSing c) (SomeSing c) (SomeSing c) (SomeSing c)- -> SomeSing (SE c c c c) }- toSing (F b b b b)- = case- GHC.Tuple.(,,,)- (toSing b :: SomeSing (KProxy :: KProxy a))- (toSing b :: SomeSing (KProxy :: KProxy b))- (toSing b :: SomeSing (KProxy :: KProxy c))- (toSing b :: SomeSing (KProxy :: KProxy d))- of {- GHC.Tuple.(,,,) (SomeSing c) (SomeSing c) (SomeSing c) (SomeSing c)- -> SomeSing (SF c c c c) }- instance (SEq (KProxy :: KProxy a),- SEq (KProxy :: KProxy b),- SEq (KProxy :: KProxy c),- SEq (KProxy :: KProxy d)) =>- SEq (KProxy :: KProxy (Foo a b c d)) where- (%:==) (SA a a a a) (SA b b b b)- = (%:&&)- ((%:==) a b)- ((%:&&) ((%:==) a b) ((%:&&) ((%:==) a b) ((%:==) a b)))- (%:==) (SA _ _ _ _) (SB _ _ _ _) = SFalse- (%:==) (SA _ _ _ _) (SC _ _ _ _) = SFalse- (%:==) (SA _ _ _ _) (SD _ _ _ _) = SFalse- (%:==) (SA _ _ _ _) (SE _ _ _ _) = SFalse- (%:==) (SA _ _ _ _) (SF _ _ _ _) = SFalse- (%:==) (SB _ _ _ _) (SA _ _ _ _) = SFalse- (%:==) (SB a a a a) (SB b b b b)- = (%:&&)- ((%:==) a b)- ((%:&&) ((%:==) a b) ((%:&&) ((%:==) a b) ((%:==) a b)))- (%:==) (SB _ _ _ _) (SC _ _ _ _) = SFalse- (%:==) (SB _ _ _ _) (SD _ _ _ _) = SFalse- (%:==) (SB _ _ _ _) (SE _ _ _ _) = SFalse- (%:==) (SB _ _ _ _) (SF _ _ _ _) = SFalse- (%:==) (SC _ _ _ _) (SA _ _ _ _) = SFalse- (%:==) (SC _ _ _ _) (SB _ _ _ _) = SFalse- (%:==) (SC a a a a) (SC b b b b)- = (%:&&)- ((%:==) a b)- ((%:&&) ((%:==) a b) ((%:&&) ((%:==) a b) ((%:==) a b)))- (%:==) (SC _ _ _ _) (SD _ _ _ _) = SFalse- (%:==) (SC _ _ _ _) (SE _ _ _ _) = SFalse- (%:==) (SC _ _ _ _) (SF _ _ _ _) = SFalse- (%:==) (SD _ _ _ _) (SA _ _ _ _) = SFalse- (%:==) (SD _ _ _ _) (SB _ _ _ _) = SFalse- (%:==) (SD _ _ _ _) (SC _ _ _ _) = SFalse- (%:==) (SD a a a a) (SD b b b b)- = (%:&&)- ((%:==) a b)- ((%:&&) ((%:==) a b) ((%:&&) ((%:==) a b) ((%:==) a b)))- (%:==) (SD _ _ _ _) (SE _ _ _ _) = SFalse- (%:==) (SD _ _ _ _) (SF _ _ _ _) = SFalse- (%:==) (SE _ _ _ _) (SA _ _ _ _) = SFalse- (%:==) (SE _ _ _ _) (SB _ _ _ _) = SFalse- (%:==) (SE _ _ _ _) (SC _ _ _ _) = SFalse- (%:==) (SE _ _ _ _) (SD _ _ _ _) = SFalse- (%:==) (SE a a a a) (SE b b b b)- = (%:&&)- ((%:==) a b)- ((%:&&) ((%:==) a b) ((%:&&) ((%:==) a b) ((%:==) a b)))- (%:==) (SE _ _ _ _) (SF _ _ _ _) = SFalse- (%:==) (SF _ _ _ _) (SA _ _ _ _) = SFalse- (%:==) (SF _ _ _ _) (SB _ _ _ _) = SFalse- (%:==) (SF _ _ _ _) (SC _ _ _ _) = SFalse- (%:==) (SF _ _ _ _) (SD _ _ _ _) = SFalse- (%:==) (SF _ _ _ _) (SE _ _ _ _) = SFalse- (%:==) (SF a a a a) (SF b b b b)- = (%:&&)- ((%:==) a b)- ((%:&&) ((%:==) a b) ((%:&&) ((%:==) a b) ((%:==) a b)))- instance (SDecide (KProxy :: KProxy a),- SDecide (KProxy :: KProxy b),- SDecide (KProxy :: KProxy c),- SDecide (KProxy :: KProxy d)) =>- SDecide (KProxy :: KProxy (Foo a b c d)) where- (%~) (SA a a a a) (SA b b b b)- = case- GHC.Tuple.(,,,) ((%~) a b) ((%~) a b) ((%~) a b) ((%~) a b)- of {- GHC.Tuple.(,,,) (Proved Refl)- (Proved Refl)- (Proved Refl)- (Proved Refl)- -> Proved Refl- GHC.Tuple.(,,,) (Disproved contra) _ _ _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })- GHC.Tuple.(,,,) _ (Disproved contra) _ _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })- GHC.Tuple.(,,,) _ _ (Disproved contra) _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })- GHC.Tuple.(,,,) _ _ _ (Disproved contra)- -> Disproved (\ refl -> case refl of { Refl -> contra Refl }) }- (%~) (SA _ _ _ _) (SB _ _ _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SA _ _ _ _) (SC _ _ _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SA _ _ _ _) (SD _ _ _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SA _ _ _ _) (SE _ _ _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SA _ _ _ _) (SF _ _ _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SB _ _ _ _) (SA _ _ _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SB a a a a) (SB b b b b)- = case- GHC.Tuple.(,,,) ((%~) a b) ((%~) a b) ((%~) a b) ((%~) a b)- of {- GHC.Tuple.(,,,) (Proved Refl)- (Proved Refl)- (Proved Refl)- (Proved Refl)- -> Proved Refl- GHC.Tuple.(,,,) (Disproved contra) _ _ _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })- GHC.Tuple.(,,,) _ (Disproved contra) _ _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })- GHC.Tuple.(,,,) _ _ (Disproved contra) _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })- GHC.Tuple.(,,,) _ _ _ (Disproved contra)- -> Disproved (\ refl -> case refl of { Refl -> contra Refl }) }- (%~) (SB _ _ _ _) (SC _ _ _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SB _ _ _ _) (SD _ _ _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SB _ _ _ _) (SE _ _ _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SB _ _ _ _) (SF _ _ _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SC _ _ _ _) (SA _ _ _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SC _ _ _ _) (SB _ _ _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SC a a a a) (SC b b b b)- = case- GHC.Tuple.(,,,) ((%~) a b) ((%~) a b) ((%~) a b) ((%~) a b)- of {- GHC.Tuple.(,,,) (Proved Refl)- (Proved Refl)- (Proved Refl)- (Proved Refl)- -> Proved Refl- GHC.Tuple.(,,,) (Disproved contra) _ _ _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })- GHC.Tuple.(,,,) _ (Disproved contra) _ _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })- GHC.Tuple.(,,,) _ _ (Disproved contra) _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })- GHC.Tuple.(,,,) _ _ _ (Disproved contra)- -> Disproved (\ refl -> case refl of { Refl -> contra Refl }) }- (%~) (SC _ _ _ _) (SD _ _ _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SC _ _ _ _) (SE _ _ _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SC _ _ _ _) (SF _ _ _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SD _ _ _ _) (SA _ _ _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SD _ _ _ _) (SB _ _ _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SD _ _ _ _) (SC _ _ _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SD a a a a) (SD b b b b)- = case- GHC.Tuple.(,,,) ((%~) a b) ((%~) a b) ((%~) a b) ((%~) a b)- of {- GHC.Tuple.(,,,) (Proved Refl)- (Proved Refl)- (Proved Refl)- (Proved Refl)- -> Proved Refl- GHC.Tuple.(,,,) (Disproved contra) _ _ _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })- GHC.Tuple.(,,,) _ (Disproved contra) _ _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })- GHC.Tuple.(,,,) _ _ (Disproved contra) _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })- GHC.Tuple.(,,,) _ _ _ (Disproved contra)- -> Disproved (\ refl -> case refl of { Refl -> contra Refl }) }- (%~) (SD _ _ _ _) (SE _ _ _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SD _ _ _ _) (SF _ _ _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SE _ _ _ _) (SA _ _ _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SE _ _ _ _) (SB _ _ _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SE _ _ _ _) (SC _ _ _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SE _ _ _ _) (SD _ _ _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SE a a a a) (SE b b b b)- = case- GHC.Tuple.(,,,) ((%~) a b) ((%~) a b) ((%~) a b) ((%~) a b)- of {- GHC.Tuple.(,,,) (Proved Refl)- (Proved Refl)- (Proved Refl)- (Proved Refl)- -> Proved Refl- GHC.Tuple.(,,,) (Disproved contra) _ _ _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })- GHC.Tuple.(,,,) _ (Disproved contra) _ _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })- GHC.Tuple.(,,,) _ _ (Disproved contra) _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })- GHC.Tuple.(,,,) _ _ _ (Disproved contra)- -> Disproved (\ refl -> case refl of { Refl -> contra Refl }) }- (%~) (SE _ _ _ _) (SF _ _ _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SF _ _ _ _) (SA _ _ _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SF _ _ _ _) (SB _ _ _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SF _ _ _ _) (SC _ _ _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SF _ _ _ _) (SD _ _ _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SF _ _ _ _) (SE _ _ _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SF a a a a) (SF b b b b)- = case- GHC.Tuple.(,,,) ((%~) a b) ((%~) a b) ((%~) a b) ((%~) a b)- of {- GHC.Tuple.(,,,) (Proved Refl)- (Proved Refl)- (Proved Refl)- (Proved Refl)- -> Proved Refl- GHC.Tuple.(,,,) (Disproved contra) _ _ _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })- GHC.Tuple.(,,,) _ (Disproved contra) _ _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })- GHC.Tuple.(,,,) _ _ (Disproved contra) _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })- GHC.Tuple.(,,,) _ _ _ (Disproved contra)- -> Disproved (\ refl -> case refl of { Refl -> contra Refl }) }- instance SOrd (KProxy :: KProxy Nat) =>- SOrd (KProxy :: KProxy Nat) where- sCompare ::- forall (t0 :: Nat) (t1 :: Nat).- Sing t0- -> Sing t1- -> Sing (Apply (Apply (CompareSym0 :: TyFun Nat (TyFun Nat Ordering- -> *)- -> *) t0 :: TyFun Nat Ordering- -> *) t1 :: Ordering)- sCompare SZero SZero- = let- lambda ::- (t0 ~ ZeroSym0, t1 ~ ZeroSym0) =>- Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- = applySing- (applySing- (applySing- (singFun3 (Proxy :: Proxy FoldlSym0) sFoldl)- (singFun2 (Proxy :: Proxy ThenCmpSym0) sThenCmp))- SEQ)- SNil- in lambda- sCompare (SSucc sA_0123456789) (SSucc sB_0123456789)- = let- lambda ::- forall a_0123456789- b_0123456789. (t0 ~ Apply SuccSym0 a_0123456789,- t1 ~ Apply SuccSym0 b_0123456789) =>- Sing a_0123456789- -> Sing b_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda a_0123456789 b_0123456789- = applySing- (applySing- (applySing- (singFun3 (Proxy :: Proxy FoldlSym0) sFoldl)- (singFun2 (Proxy :: Proxy ThenCmpSym0) sThenCmp))- SEQ)- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (applySing- (singFun2 (Proxy :: Proxy CompareSym0) sCompare) a_0123456789)- b_0123456789))- SNil)- in lambda sA_0123456789 sB_0123456789- sCompare SZero (SSucc _s_z_0123456789)- = let- lambda ::- forall _z_0123456789. (t0 ~ ZeroSym0,- t1 ~ Apply SuccSym0 _z_0123456789) =>- Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda _z_0123456789 = SLT- in lambda _s_z_0123456789- sCompare (SSucc _s_z_0123456789) SZero- = let- lambda ::- forall _z_0123456789. (t0 ~ Apply SuccSym0 _z_0123456789,- t1 ~ ZeroSym0) =>- Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda _z_0123456789 = SGT- in lambda _s_z_0123456789- instance (SOrd (KProxy :: KProxy a),- SOrd (KProxy :: KProxy b),- SOrd (KProxy :: KProxy c),- SOrd (KProxy :: KProxy d)) =>- SOrd (KProxy :: KProxy (Foo a b c d)) where- sCompare ::- forall (t0 :: Foo a b c d) (t1 :: Foo a b c d).- Sing t0- -> Sing t1- -> Sing (Apply (Apply (CompareSym0 :: TyFun (Foo a b c d) (TyFun (Foo a b c d) Ordering- -> *)- -> *) t0 :: TyFun (Foo a b c d) Ordering- -> *) t1 :: Ordering)- sCompare- (SA sA_0123456789 sA_0123456789 sA_0123456789 sA_0123456789)- (SA sB_0123456789 sB_0123456789 sB_0123456789 sB_0123456789)- = let- lambda ::- forall a_0123456789- a_0123456789- a_0123456789- a_0123456789- b_0123456789- b_0123456789- b_0123456789- b_0123456789. (t0 ~ Apply (Apply (Apply (Apply ASym0 a_0123456789) a_0123456789) a_0123456789) a_0123456789,- t1 ~ Apply (Apply (Apply (Apply ASym0 b_0123456789) b_0123456789) b_0123456789) b_0123456789) =>- Sing a_0123456789- -> Sing a_0123456789- -> Sing a_0123456789- -> Sing a_0123456789- -> Sing b_0123456789- -> Sing b_0123456789- -> Sing b_0123456789- -> Sing b_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- a_0123456789- a_0123456789- a_0123456789- a_0123456789- b_0123456789- b_0123456789- b_0123456789- b_0123456789- = applySing- (applySing- (applySing- (singFun3 (Proxy :: Proxy FoldlSym0) sFoldl)- (singFun2 (Proxy :: Proxy ThenCmpSym0) sThenCmp))- SEQ)- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (applySing- (singFun2 (Proxy :: Proxy CompareSym0) sCompare) a_0123456789)- b_0123456789))- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (applySing- (singFun2 (Proxy :: Proxy CompareSym0) sCompare) a_0123456789)- b_0123456789))- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (applySing- (singFun2 (Proxy :: Proxy CompareSym0) sCompare) a_0123456789)- b_0123456789))- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (applySing- (singFun2 (Proxy :: Proxy CompareSym0) sCompare)- a_0123456789)- b_0123456789))- SNil))))- in- lambda- sA_0123456789- sA_0123456789- sA_0123456789- sA_0123456789- sB_0123456789- sB_0123456789- sB_0123456789- sB_0123456789- sCompare- (SB sA_0123456789 sA_0123456789 sA_0123456789 sA_0123456789)- (SB sB_0123456789 sB_0123456789 sB_0123456789 sB_0123456789)- = let- lambda ::- forall a_0123456789- a_0123456789- a_0123456789- a_0123456789- b_0123456789- b_0123456789- b_0123456789- b_0123456789. (t0 ~ Apply (Apply (Apply (Apply BSym0 a_0123456789) a_0123456789) a_0123456789) a_0123456789,- t1 ~ Apply (Apply (Apply (Apply BSym0 b_0123456789) b_0123456789) b_0123456789) b_0123456789) =>- Sing a_0123456789- -> Sing a_0123456789- -> Sing a_0123456789- -> Sing a_0123456789- -> Sing b_0123456789- -> Sing b_0123456789- -> Sing b_0123456789- -> Sing b_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- a_0123456789- a_0123456789- a_0123456789- a_0123456789- b_0123456789- b_0123456789- b_0123456789- b_0123456789- = applySing- (applySing- (applySing- (singFun3 (Proxy :: Proxy FoldlSym0) sFoldl)- (singFun2 (Proxy :: Proxy ThenCmpSym0) sThenCmp))- SEQ)- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (applySing- (singFun2 (Proxy :: Proxy CompareSym0) sCompare) a_0123456789)- b_0123456789))- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (applySing- (singFun2 (Proxy :: Proxy CompareSym0) sCompare) a_0123456789)- b_0123456789))- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (applySing- (singFun2 (Proxy :: Proxy CompareSym0) sCompare) a_0123456789)- b_0123456789))- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (applySing- (singFun2 (Proxy :: Proxy CompareSym0) sCompare)- a_0123456789)- b_0123456789))- SNil))))- in- lambda- sA_0123456789- sA_0123456789- sA_0123456789- sA_0123456789- sB_0123456789- sB_0123456789- sB_0123456789- sB_0123456789- sCompare- (SC sA_0123456789 sA_0123456789 sA_0123456789 sA_0123456789)- (SC sB_0123456789 sB_0123456789 sB_0123456789 sB_0123456789)- = let- lambda ::- forall a_0123456789- a_0123456789- a_0123456789- a_0123456789- b_0123456789- b_0123456789- b_0123456789- b_0123456789. (t0 ~ Apply (Apply (Apply (Apply CSym0 a_0123456789) a_0123456789) a_0123456789) a_0123456789,- t1 ~ Apply (Apply (Apply (Apply CSym0 b_0123456789) b_0123456789) b_0123456789) b_0123456789) =>- Sing a_0123456789- -> Sing a_0123456789- -> Sing a_0123456789- -> Sing a_0123456789- -> Sing b_0123456789- -> Sing b_0123456789- -> Sing b_0123456789- -> Sing b_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- a_0123456789- a_0123456789- a_0123456789- a_0123456789- b_0123456789- b_0123456789- b_0123456789- b_0123456789- = applySing- (applySing- (applySing- (singFun3 (Proxy :: Proxy FoldlSym0) sFoldl)- (singFun2 (Proxy :: Proxy ThenCmpSym0) sThenCmp))- SEQ)- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (applySing- (singFun2 (Proxy :: Proxy CompareSym0) sCompare) a_0123456789)- b_0123456789))- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (applySing- (singFun2 (Proxy :: Proxy CompareSym0) sCompare) a_0123456789)- b_0123456789))- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (applySing- (singFun2 (Proxy :: Proxy CompareSym0) sCompare) a_0123456789)- b_0123456789))- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (applySing- (singFun2 (Proxy :: Proxy CompareSym0) sCompare)- a_0123456789)- b_0123456789))- SNil))))- in- lambda- sA_0123456789- sA_0123456789- sA_0123456789- sA_0123456789- sB_0123456789- sB_0123456789- sB_0123456789- sB_0123456789- sCompare- (SD sA_0123456789 sA_0123456789 sA_0123456789 sA_0123456789)- (SD sB_0123456789 sB_0123456789 sB_0123456789 sB_0123456789)- = let- lambda ::- forall a_0123456789- a_0123456789- a_0123456789- a_0123456789- b_0123456789- b_0123456789- b_0123456789- b_0123456789. (t0 ~ Apply (Apply (Apply (Apply DSym0 a_0123456789) a_0123456789) a_0123456789) a_0123456789,- t1 ~ Apply (Apply (Apply (Apply DSym0 b_0123456789) b_0123456789) b_0123456789) b_0123456789) =>- Sing a_0123456789- -> Sing a_0123456789- -> Sing a_0123456789- -> Sing a_0123456789- -> Sing b_0123456789- -> Sing b_0123456789- -> Sing b_0123456789- -> Sing b_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- a_0123456789- a_0123456789- a_0123456789- a_0123456789- b_0123456789- b_0123456789- b_0123456789- b_0123456789- = applySing- (applySing- (applySing- (singFun3 (Proxy :: Proxy FoldlSym0) sFoldl)- (singFun2 (Proxy :: Proxy ThenCmpSym0) sThenCmp))- SEQ)- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (applySing- (singFun2 (Proxy :: Proxy CompareSym0) sCompare) a_0123456789)- b_0123456789))- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (applySing- (singFun2 (Proxy :: Proxy CompareSym0) sCompare) a_0123456789)- b_0123456789))- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (applySing- (singFun2 (Proxy :: Proxy CompareSym0) sCompare) a_0123456789)- b_0123456789))- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (applySing- (singFun2 (Proxy :: Proxy CompareSym0) sCompare)- a_0123456789)- b_0123456789))- SNil))))- in- lambda- sA_0123456789- sA_0123456789- sA_0123456789- sA_0123456789- sB_0123456789- sB_0123456789- sB_0123456789- sB_0123456789- sCompare- (SE sA_0123456789 sA_0123456789 sA_0123456789 sA_0123456789)- (SE sB_0123456789 sB_0123456789 sB_0123456789 sB_0123456789)- = let- lambda ::- forall a_0123456789- a_0123456789- a_0123456789- a_0123456789- b_0123456789- b_0123456789- b_0123456789- b_0123456789. (t0 ~ Apply (Apply (Apply (Apply ESym0 a_0123456789) a_0123456789) a_0123456789) a_0123456789,- t1 ~ Apply (Apply (Apply (Apply ESym0 b_0123456789) b_0123456789) b_0123456789) b_0123456789) =>- Sing a_0123456789- -> Sing a_0123456789- -> Sing a_0123456789- -> Sing a_0123456789- -> Sing b_0123456789- -> Sing b_0123456789- -> Sing b_0123456789- -> Sing b_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- a_0123456789- a_0123456789- a_0123456789- a_0123456789- b_0123456789- b_0123456789- b_0123456789- b_0123456789- = applySing- (applySing- (applySing- (singFun3 (Proxy :: Proxy FoldlSym0) sFoldl)- (singFun2 (Proxy :: Proxy ThenCmpSym0) sThenCmp))- SEQ)- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (applySing- (singFun2 (Proxy :: Proxy CompareSym0) sCompare) a_0123456789)- b_0123456789))- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (applySing- (singFun2 (Proxy :: Proxy CompareSym0) sCompare) a_0123456789)- b_0123456789))- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (applySing- (singFun2 (Proxy :: Proxy CompareSym0) sCompare) a_0123456789)- b_0123456789))- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (applySing- (singFun2 (Proxy :: Proxy CompareSym0) sCompare)- a_0123456789)- b_0123456789))- SNil))))- in- lambda- sA_0123456789- sA_0123456789- sA_0123456789- sA_0123456789- sB_0123456789- sB_0123456789- sB_0123456789- sB_0123456789- sCompare- (SF sA_0123456789 sA_0123456789 sA_0123456789 sA_0123456789)- (SF sB_0123456789 sB_0123456789 sB_0123456789 sB_0123456789)- = let- lambda ::- forall a_0123456789- a_0123456789- a_0123456789- a_0123456789- b_0123456789- b_0123456789- b_0123456789- b_0123456789. (t0 ~ Apply (Apply (Apply (Apply FSym0 a_0123456789) a_0123456789) a_0123456789) a_0123456789,- t1 ~ Apply (Apply (Apply (Apply FSym0 b_0123456789) b_0123456789) b_0123456789) b_0123456789) =>- Sing a_0123456789- -> Sing a_0123456789- -> Sing a_0123456789- -> Sing a_0123456789- -> Sing b_0123456789- -> Sing b_0123456789- -> Sing b_0123456789- -> Sing b_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- a_0123456789- a_0123456789- a_0123456789- a_0123456789- b_0123456789- b_0123456789- b_0123456789- b_0123456789- = applySing- (applySing- (applySing- (singFun3 (Proxy :: Proxy FoldlSym0) sFoldl)- (singFun2 (Proxy :: Proxy ThenCmpSym0) sThenCmp))- SEQ)- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (applySing- (singFun2 (Proxy :: Proxy CompareSym0) sCompare) a_0123456789)- b_0123456789))- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (applySing- (singFun2 (Proxy :: Proxy CompareSym0) sCompare) a_0123456789)- b_0123456789))- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (applySing- (singFun2 (Proxy :: Proxy CompareSym0) sCompare) a_0123456789)- b_0123456789))- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (applySing- (singFun2 (Proxy :: Proxy CompareSym0) sCompare)- a_0123456789)- b_0123456789))- SNil))))- in- lambda- sA_0123456789- sA_0123456789- sA_0123456789- sA_0123456789- sB_0123456789- sB_0123456789- sB_0123456789- sB_0123456789- sCompare- (SA _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- (SB _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- = let- lambda ::- forall _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789. (t0 ~ Apply (Apply (Apply (Apply ASym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789,- t1 ~ Apply (Apply (Apply (Apply BSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- = SLT- in- lambda- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- sCompare- (SA _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- (SC _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- = let- lambda ::- forall _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789. (t0 ~ Apply (Apply (Apply (Apply ASym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789,- t1 ~ Apply (Apply (Apply (Apply CSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- = SLT- in- lambda- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- sCompare- (SA _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- (SD _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- = let- lambda ::- forall _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789. (t0 ~ Apply (Apply (Apply (Apply ASym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789,- t1 ~ Apply (Apply (Apply (Apply DSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- = SLT- in- lambda- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- sCompare- (SA _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- (SE _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- = let- lambda ::- forall _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789. (t0 ~ Apply (Apply (Apply (Apply ASym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789,- t1 ~ Apply (Apply (Apply (Apply ESym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- = SLT- in- lambda- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- sCompare- (SA _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- (SF _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- = let- lambda ::- forall _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789. (t0 ~ Apply (Apply (Apply (Apply ASym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789,- t1 ~ Apply (Apply (Apply (Apply FSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- = SLT- in- lambda- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- sCompare- (SB _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- (SA _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- = let- lambda ::- forall _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789. (t0 ~ Apply (Apply (Apply (Apply BSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789,- t1 ~ Apply (Apply (Apply (Apply ASym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- = SGT- in- lambda- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- sCompare- (SB _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- (SC _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- = let- lambda ::- forall _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789. (t0 ~ Apply (Apply (Apply (Apply BSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789,- t1 ~ Apply (Apply (Apply (Apply CSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- = SLT- in- lambda- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- sCompare- (SB _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- (SD _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- = let- lambda ::- forall _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789. (t0 ~ Apply (Apply (Apply (Apply BSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789,- t1 ~ Apply (Apply (Apply (Apply DSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- = SLT- in- lambda- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- sCompare- (SB _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- (SE _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- = let- lambda ::- forall _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789. (t0 ~ Apply (Apply (Apply (Apply BSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789,- t1 ~ Apply (Apply (Apply (Apply ESym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- = SLT- in- lambda- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- sCompare- (SB _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- (SF _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- = let- lambda ::- forall _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789. (t0 ~ Apply (Apply (Apply (Apply BSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789,- t1 ~ Apply (Apply (Apply (Apply FSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- = SLT- in- lambda- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- sCompare- (SC _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- (SA _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- = let- lambda ::- forall _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789. (t0 ~ Apply (Apply (Apply (Apply CSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789,- t1 ~ Apply (Apply (Apply (Apply ASym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- = SGT- in- lambda- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- sCompare- (SC _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- (SB _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- = let- lambda ::- forall _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789. (t0 ~ Apply (Apply (Apply (Apply CSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789,- t1 ~ Apply (Apply (Apply (Apply BSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- = SGT- in- lambda- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- sCompare- (SC _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- (SD _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- = let- lambda ::- forall _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789. (t0 ~ Apply (Apply (Apply (Apply CSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789,- t1 ~ Apply (Apply (Apply (Apply DSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- = SLT- in- lambda- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- sCompare- (SC _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- (SE _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- = let- lambda ::- forall _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789. (t0 ~ Apply (Apply (Apply (Apply CSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789,- t1 ~ Apply (Apply (Apply (Apply ESym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- = SLT- in- lambda- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- sCompare- (SC _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- (SF _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- = let- lambda ::- forall _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789. (t0 ~ Apply (Apply (Apply (Apply CSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789,- t1 ~ Apply (Apply (Apply (Apply FSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- = SLT- in- lambda- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- sCompare- (SD _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- (SA _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- = let- lambda ::- forall _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789. (t0 ~ Apply (Apply (Apply (Apply DSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789,- t1 ~ Apply (Apply (Apply (Apply ASym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- = SGT- in- lambda- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- sCompare- (SD _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- (SB _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- = let- lambda ::- forall _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789. (t0 ~ Apply (Apply (Apply (Apply DSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789,- t1 ~ Apply (Apply (Apply (Apply BSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- = SGT- in- lambda- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- sCompare- (SD _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- (SC _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- = let- lambda ::- forall _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789. (t0 ~ Apply (Apply (Apply (Apply DSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789,- t1 ~ Apply (Apply (Apply (Apply CSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- = SGT- in- lambda- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- sCompare- (SD _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- (SE _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- = let- lambda ::- forall _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789. (t0 ~ Apply (Apply (Apply (Apply DSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789,- t1 ~ Apply (Apply (Apply (Apply ESym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- = SLT- in- lambda- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- sCompare- (SD _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- (SF _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- = let- lambda ::- forall _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789. (t0 ~ Apply (Apply (Apply (Apply DSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789,- t1 ~ Apply (Apply (Apply (Apply FSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- = SLT- in- lambda- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- sCompare- (SE _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- (SA _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- = let- lambda ::- forall _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789. (t0 ~ Apply (Apply (Apply (Apply ESym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789,- t1 ~ Apply (Apply (Apply (Apply ASym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- = SGT- in- lambda- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- sCompare- (SE _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- (SB _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- = let- lambda ::- forall _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789. (t0 ~ Apply (Apply (Apply (Apply ESym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789,- t1 ~ Apply (Apply (Apply (Apply BSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- = SGT- in- lambda- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- sCompare- (SE _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- (SC _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- = let- lambda ::- forall _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789. (t0 ~ Apply (Apply (Apply (Apply ESym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789,- t1 ~ Apply (Apply (Apply (Apply CSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- = SGT- in- lambda- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- sCompare- (SE _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- (SD _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- = let- lambda ::- forall _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789. (t0 ~ Apply (Apply (Apply (Apply ESym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789,- t1 ~ Apply (Apply (Apply (Apply DSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- = SGT- in- lambda- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- sCompare- (SE _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- (SF _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- = let- lambda ::- forall _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789. (t0 ~ Apply (Apply (Apply (Apply ESym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789,- t1 ~ Apply (Apply (Apply (Apply FSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- = SLT- in- lambda- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- sCompare- (SF _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- (SA _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- = let- lambda ::- forall _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789. (t0 ~ Apply (Apply (Apply (Apply FSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789,- t1 ~ Apply (Apply (Apply (Apply ASym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- = SGT- in- lambda- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- sCompare- (SF _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- (SB _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- = let- lambda ::- forall _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789. (t0 ~ Apply (Apply (Apply (Apply FSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789,- t1 ~ Apply (Apply (Apply (Apply BSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- = SGT- in- lambda- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- sCompare- (SF _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- (SC _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- = let- lambda ::- forall _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789. (t0 ~ Apply (Apply (Apply (Apply FSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789,- t1 ~ Apply (Apply (Apply (Apply CSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- = SGT- in- lambda- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- sCompare- (SF _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- (SD _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- = let- lambda ::- forall _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789. (t0 ~ Apply (Apply (Apply (Apply FSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789,- t1 ~ Apply (Apply (Apply (Apply DSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- = SGT- in- lambda- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- sCompare- (SF _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- (SE _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789)- = let- lambda ::- forall _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789. (t0 ~ Apply (Apply (Apply (Apply FSym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789,- t1 ~ Apply (Apply (Apply (Apply ESym0 _z_0123456789) _z_0123456789) _z_0123456789) _z_0123456789) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- _z_0123456789- = SGT- in- lambda- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- _s_z_0123456789- instance SingI Zero where- sing = SZero- instance SingI n => SingI (Succ (n :: Nat)) where- sing = SSucc sing- instance (SingI n, SingI n, SingI n, SingI n) =>- SingI (A (n :: a) (n :: b) (n :: c) (n :: d)) where- sing = SA sing sing sing sing- instance (SingI n, SingI n, SingI n, SingI n) =>- SingI (B (n :: a) (n :: b) (n :: c) (n :: d)) where- sing = SB sing sing sing sing- instance (SingI n, SingI n, SingI n, SingI n) =>- SingI (C (n :: a) (n :: b) (n :: c) (n :: d)) where- sing = SC sing sing sing sing- instance (SingI n, SingI n, SingI n, SingI n) =>- SingI (D (n :: a) (n :: b) (n :: c) (n :: d)) where- sing = SD sing sing sing sing- instance (SingI n, SingI n, SingI n, SingI n) =>- SingI (E (n :: a) (n :: b) (n :: c) (n :: d)) where- sing = SE sing sing sing sing- instance (SingI n, SingI n, SingI n, SingI n) =>- SingI (F (n :: a) (n :: b) (n :: c) (n :: d)) where- sing = SF sing sing sing sing
tests/compile-and-dump/Singletons/OrdDeriving.ghc80.template view
@@ -27,7 +27,7 @@ Equals_0123456789 Zero Zero = TrueSym0 Equals_0123456789 (Succ a) (Succ b) = (:==) a b Equals_0123456789 (a :: Nat) (b :: Nat) = FalseSym0- instance PEq (KProxy :: KProxy Nat) where+ instance PEq (Proxy :: Proxy Nat) where type (:==) (a :: Nat) (b :: Nat) = Equals_0123456789 a b type ZeroSym0 = Zero type SuccSym1 (t :: Nat) = Succ t@@ -47,7 +47,7 @@ Equals_0123456789 (E a a a a) (E b b b b) = (:&&) ((:==) a b) ((:&&) ((:==) a b) ((:&&) ((:==) a b) ((:==) a b))) Equals_0123456789 (F a a a a) (F b b b b) = (:&&) ((:==) a b) ((:&&) ((:==) a b) ((:&&) ((:==) a b) ((:==) a b))) Equals_0123456789 (a :: Foo k k k k) (b :: Foo k k k k) = FalseSym0- instance PEq (KProxy :: KProxy (Foo k k k k)) where+ instance PEq (Proxy :: Proxy (Foo k k k k)) where type (:==) (a :: Foo k k k k) (b :: Foo k k k k) = Equals_0123456789 a b type ASym4 (t :: a0123456789) (t :: b0123456789)@@ -344,7 +344,7 @@ = forall arg. KindOf (Apply Compare_0123456789Sym0 arg) ~ KindOf (Compare_0123456789Sym1 arg) => Compare_0123456789Sym0KindInference type instance Apply Compare_0123456789Sym0 l = Compare_0123456789Sym1 l- instance POrd (KProxy :: KProxy Nat) where+ instance POrd (Proxy :: Proxy Nat) where type Compare (a :: Nat) (a :: Nat) = Apply (Apply Compare_0123456789Sym0 a) a type family Compare_0123456789 (a :: Foo a b c d) (a :: Foo a b c d) :: Ordering where@@ -405,26 +405,26 @@ = forall arg. KindOf (Apply Compare_0123456789Sym0 arg) ~ KindOf (Compare_0123456789Sym1 arg) => Compare_0123456789Sym0KindInference type instance Apply Compare_0123456789Sym0 l = Compare_0123456789Sym1 l- instance POrd (KProxy :: KProxy (Foo a b c d)) where+ instance POrd (Proxy :: Proxy (Foo a b c d)) where type Compare (a :: Foo a b c d) (a :: Foo a b c d) = Apply (Apply Compare_0123456789Sym0 a) a data instance Sing (z :: Nat) = z ~ Zero => SZero | forall (n :: Nat). z ~ Succ n => SSucc (Sing (n :: Nat)) type SNat = (Sing :: Nat -> GHC.Types.Type)- instance SingKind (KProxy :: KProxy Nat) where- type DemoteRep (KProxy :: KProxy Nat) = Nat+ instance SingKind Nat where+ type DemoteRep Nat = Nat fromSing SZero = Zero fromSing (SSucc b) = Succ (fromSing b) toSing Zero = SomeSing SZero toSing (Succ b)- = case toSing b :: SomeSing (KProxy :: KProxy Nat) of {+ = case toSing b :: SomeSing Nat of { SomeSing c -> SomeSing (SSucc c) }- instance SEq (KProxy :: KProxy Nat) where+ instance SEq Nat where (%:==) SZero SZero = STrue (%:==) SZero (SSucc _) = SFalse (%:==) (SSucc _) SZero = SFalse (%:==) (SSucc a) (SSucc b) = (%:==) a b- instance SDecide (KProxy :: KProxy Nat) where+ instance SDecide Nat where (%~) SZero SZero = Proved Refl (%~) SZero (SSucc _) = Disproved@@ -455,12 +455,9 @@ forall (n :: a) (n :: b) (n :: c) (n :: d). z ~ F n n n n => SF (Sing (n :: a)) (Sing (n :: b)) (Sing (n :: c)) (Sing (n :: d)) type SFoo = (Sing :: Foo a b c d -> GHC.Types.Type)- instance (SingKind (KProxy :: KProxy a),- SingKind (KProxy :: KProxy b),- SingKind (KProxy :: KProxy c),- SingKind (KProxy :: KProxy d)) =>- SingKind (KProxy :: KProxy (Foo a b c d)) where- type DemoteRep (KProxy :: KProxy (Foo a b c d)) = Foo (DemoteRep (KProxy :: KProxy a)) (DemoteRep (KProxy :: KProxy b)) (DemoteRep (KProxy :: KProxy c)) (DemoteRep (KProxy :: KProxy d))+ instance (SingKind a, SingKind b, SingKind c, SingKind d) =>+ SingKind (Foo a b c d) where+ type DemoteRep (Foo a b c d) = Foo (DemoteRep a) (DemoteRep b) (DemoteRep c) (DemoteRep d) fromSing (SA b b b b) = A (fromSing b) (fromSing b) (fromSing b) (fromSing b) fromSing (SB b b b b)@@ -476,68 +473,64 @@ toSing (A b b b b) = case GHC.Tuple.(,,,)- (toSing b :: SomeSing (KProxy :: KProxy a))- (toSing b :: SomeSing (KProxy :: KProxy b))- (toSing b :: SomeSing (KProxy :: KProxy c))- (toSing b :: SomeSing (KProxy :: KProxy d))+ (toSing b :: SomeSing a)+ (toSing b :: SomeSing b)+ (toSing b :: SomeSing c)+ (toSing b :: SomeSing d) of { GHC.Tuple.(,,,) (SomeSing c) (SomeSing c) (SomeSing c) (SomeSing c) -> SomeSing (SA c c c c) } toSing (B b b b b) = case GHC.Tuple.(,,,)- (toSing b :: SomeSing (KProxy :: KProxy a))- (toSing b :: SomeSing (KProxy :: KProxy b))- (toSing b :: SomeSing (KProxy :: KProxy c))- (toSing b :: SomeSing (KProxy :: KProxy d))+ (toSing b :: SomeSing a)+ (toSing b :: SomeSing b)+ (toSing b :: SomeSing c)+ (toSing b :: SomeSing d) of { GHC.Tuple.(,,,) (SomeSing c) (SomeSing c) (SomeSing c) (SomeSing c) -> SomeSing (SB c c c c) } toSing (C b b b b) = case GHC.Tuple.(,,,)- (toSing b :: SomeSing (KProxy :: KProxy a))- (toSing b :: SomeSing (KProxy :: KProxy b))- (toSing b :: SomeSing (KProxy :: KProxy c))- (toSing b :: SomeSing (KProxy :: KProxy d))+ (toSing b :: SomeSing a)+ (toSing b :: SomeSing b)+ (toSing b :: SomeSing c)+ (toSing b :: SomeSing d) of { GHC.Tuple.(,,,) (SomeSing c) (SomeSing c) (SomeSing c) (SomeSing c) -> SomeSing (SC c c c c) } toSing (D b b b b) = case GHC.Tuple.(,,,)- (toSing b :: SomeSing (KProxy :: KProxy a))- (toSing b :: SomeSing (KProxy :: KProxy b))- (toSing b :: SomeSing (KProxy :: KProxy c))- (toSing b :: SomeSing (KProxy :: KProxy d))+ (toSing b :: SomeSing a)+ (toSing b :: SomeSing b)+ (toSing b :: SomeSing c)+ (toSing b :: SomeSing d) of { GHC.Tuple.(,,,) (SomeSing c) (SomeSing c) (SomeSing c) (SomeSing c) -> SomeSing (SD c c c c) } toSing (E b b b b) = case GHC.Tuple.(,,,)- (toSing b :: SomeSing (KProxy :: KProxy a))- (toSing b :: SomeSing (KProxy :: KProxy b))- (toSing b :: SomeSing (KProxy :: KProxy c))- (toSing b :: SomeSing (KProxy :: KProxy d))+ (toSing b :: SomeSing a)+ (toSing b :: SomeSing b)+ (toSing b :: SomeSing c)+ (toSing b :: SomeSing d) of { GHC.Tuple.(,,,) (SomeSing c) (SomeSing c) (SomeSing c) (SomeSing c) -> SomeSing (SE c c c c) } toSing (F b b b b) = case GHC.Tuple.(,,,)- (toSing b :: SomeSing (KProxy :: KProxy a))- (toSing b :: SomeSing (KProxy :: KProxy b))- (toSing b :: SomeSing (KProxy :: KProxy c))- (toSing b :: SomeSing (KProxy :: KProxy d))+ (toSing b :: SomeSing a)+ (toSing b :: SomeSing b)+ (toSing b :: SomeSing c)+ (toSing b :: SomeSing d) of { GHC.Tuple.(,,,) (SomeSing c) (SomeSing c) (SomeSing c) (SomeSing c) -> SomeSing (SF c c c c) }- instance (SEq (KProxy :: KProxy a),- SEq (KProxy :: KProxy b),- SEq (KProxy :: KProxy c),- SEq (KProxy :: KProxy d)) =>- SEq (KProxy :: KProxy (Foo a b c d)) where+ instance (SEq a, SEq b, SEq c, SEq d) => SEq (Foo a b c d) where (%:==) (SA a a a a) (SA b b b b) = (%:&&) ((%:==) a b)@@ -592,11 +585,8 @@ = (%:&&) ((%:==) a b) ((%:&&) ((%:==) a b) ((%:&&) ((%:==) a b) ((%:==) a b)))- instance (SDecide (KProxy :: KProxy a),- SDecide (KProxy :: KProxy b),- SDecide (KProxy :: KProxy c),- SDecide (KProxy :: KProxy d)) =>- SDecide (KProxy :: KProxy (Foo a b c d)) where+ instance (SDecide a, SDecide b, SDecide c, SDecide d) =>+ SDecide (Foo a b c d) where (%~) (SA a a a a) (SA b b b b) = case GHC.Tuple.(,,,) ((%~) a b) ((%~) a b) ((%~) a b) ((%~) a b)@@ -849,8 +839,7 @@ -> Disproved (\ refl -> case refl of { Refl -> contra Refl }) GHC.Tuple.(,,,) _ _ _ (Disproved contra) -> Disproved (\ refl -> case refl of { Refl -> contra Refl }) }- instance SOrd (KProxy :: KProxy Nat) =>- SOrd (KProxy :: KProxy Nat) where+ instance SOrd Nat => SOrd Nat where sCompare :: forall (t0 :: Nat) (t1 :: Nat). Sing t0@@ -916,11 +905,8 @@ -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering) lambda _z_0123456789 = SGT in lambda _s_z_0123456789- instance (SOrd (KProxy :: KProxy a),- SOrd (KProxy :: KProxy b),- SOrd (KProxy :: KProxy c),- SOrd (KProxy :: KProxy d)) =>- SOrd (KProxy :: KProxy (Foo a b c d)) where+ instance (SOrd a, SOrd b, SOrd c, SOrd d) =>+ SOrd (Foo a b c d) where sCompare :: forall (t0 :: Foo a b c d) (t1 :: Foo a b c d). Sing t0
− tests/compile-and-dump/Singletons/PatternMatching.ghc710.template
@@ -1,593 +0,0 @@-Singletons/PatternMatching.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| pr = Pair (Succ Zero) ([Zero])- complex = Pair (Pair (Just Zero) Zero) False- tuple = (False, Just Zero, True)- aList = [Zero, Succ Zero, Succ (Succ Zero)]- - data Pair a b- = Pair a b- deriving (Show) |]- ======>- data Pair a b- = Pair a b- deriving (Show)- pr = Pair (Succ Zero) [Zero]- complex = Pair (Pair (Just Zero) Zero) False- tuple = (False, Just Zero, True)- aList = [Zero, Succ Zero, Succ (Succ Zero)]- type PairSym2 (t :: a0123456789) (t :: b0123456789) = Pair t t- instance SuppressUnusedWarnings PairSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) PairSym1KindInference GHC.Tuple.())- data PairSym1 (l :: a0123456789)- (l :: TyFun b0123456789 (Pair a0123456789 b0123456789))- = forall arg. KindOf (Apply (PairSym1 l) arg) ~ KindOf (PairSym2 l arg) =>- PairSym1KindInference- type instance Apply (PairSym1 l) l = PairSym2 l l- instance SuppressUnusedWarnings PairSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) PairSym0KindInference GHC.Tuple.())- data PairSym0 (l :: TyFun a0123456789 (TyFun b0123456789 (Pair a0123456789 b0123456789)- -> *))- = forall arg. KindOf (Apply PairSym0 arg) ~ KindOf (PairSym1 arg) =>- PairSym0KindInference- type instance Apply PairSym0 l = PairSym1 l- type AListSym0 = AList- type TupleSym0 = Tuple- type ComplexSym0 = Complex- type PrSym0 = Pr- type family AList where- AList = Apply (Apply (:$) ZeroSym0) (Apply (Apply (:$) (Apply SuccSym0 ZeroSym0)) (Apply (Apply (:$) (Apply SuccSym0 (Apply SuccSym0 ZeroSym0))) '[]))- type family Tuple where- Tuple = Apply (Apply (Apply Tuple3Sym0 FalseSym0) (Apply JustSym0 ZeroSym0)) TrueSym0- type family Complex where- Complex = Apply (Apply PairSym0 (Apply (Apply PairSym0 (Apply JustSym0 ZeroSym0)) ZeroSym0)) FalseSym0- type family Pr where- Pr = Apply (Apply PairSym0 (Apply SuccSym0 ZeroSym0)) (Apply (Apply (:$) ZeroSym0) '[])- sAList :: Sing AListSym0- sTuple :: Sing TupleSym0- sComplex :: Sing ComplexSym0- sPr :: Sing PrSym0- sAList- = applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) SZero)- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing (singFun1 (Proxy :: Proxy SuccSym0) SSucc) SZero))- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing- (singFun1 (Proxy :: Proxy SuccSym0) SSucc)- (applySing (singFun1 (Proxy :: Proxy SuccSym0) SSucc) SZero)))- SNil))- sTuple- = applySing- (applySing- (applySing (singFun3 (Proxy :: Proxy Tuple3Sym0) STuple3) SFalse)- (applySing (singFun1 (Proxy :: Proxy JustSym0) SJust) SZero))- STrue- sComplex- = applySing- (applySing- (singFun2 (Proxy :: Proxy PairSym0) SPair)- (applySing- (applySing- (singFun2 (Proxy :: Proxy PairSym0) SPair)- (applySing (singFun1 (Proxy :: Proxy JustSym0) SJust) SZero))- SZero))- SFalse- sPr- = applySing- (applySing- (singFun2 (Proxy :: Proxy PairSym0) SPair)- (applySing (singFun1 (Proxy :: Proxy SuccSym0) SSucc) SZero))- (applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) SZero) SNil)- data instance Sing (z :: Pair a b)- = forall (n :: a) (n :: b). z ~ Pair n n =>- SPair (Sing (n :: a)) (Sing (n :: b))- type SPair = (Sing :: Pair a b -> *)- instance (SingKind (KProxy :: KProxy a),- SingKind (KProxy :: KProxy b)) =>- SingKind (KProxy :: KProxy (Pair a b)) where- type DemoteRep (KProxy :: KProxy (Pair a b)) = Pair (DemoteRep (KProxy :: KProxy a)) (DemoteRep (KProxy :: KProxy b))- fromSing (SPair b b) = Pair (fromSing b) (fromSing b)- toSing (Pair b b)- = case- GHC.Tuple.(,)- (toSing b :: SomeSing (KProxy :: KProxy a))- (toSing b :: SomeSing (KProxy :: KProxy b))- of {- GHC.Tuple.(,) (SomeSing c) (SomeSing c) -> SomeSing (SPair c c) }- instance (SingI n, SingI n) => SingI (Pair (n :: a) (n :: b)) where- sing = SPair sing sing-Singletons/PatternMatching.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| Pair sz lz = pr- Pair (Pair jz zz) fls = complex- (tf, tjz, tt) = tuple- [_, lsz, (Succ blimy)] = aList- lsz :: Nat- fls :: Bool- foo1 :: (a, b) -> a- foo1 (x, y) = (\ _ -> x) y- foo2 :: (# a, b #) -> a- foo2 t@(# x, y #) = case t of { (# a, b #) -> (\ _ -> a) b }- silly :: a -> ()- silly x = case x of { _ -> () } |]- ======>- Pair sz lz = pr- Pair (Pair jz zz) fls = complex- (tf, tjz, tt) = tuple- [_, lsz, Succ blimy] = aList- lsz :: Nat- fls :: Bool- foo1 :: forall a b. (a, b) -> a- foo1 (x, y) = \ _ -> x y- foo2 :: forall a b. (# a, b #) -> a- foo2 t@(# x, y #) = case t of { (# a, b #) -> \ _ -> a b }- silly :: forall a. a -> ()- silly x = case x of { _ -> GHC.Tuple.() }- type family Case_0123456789 x t where- Case_0123456789 x _z_0123456789 = Tuple0Sym0- type Let0123456789TSym2 t t = Let0123456789T t t- instance SuppressUnusedWarnings Let0123456789TSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Let0123456789TSym1KindInference GHC.Tuple.())- data Let0123456789TSym1 l l- = forall arg. KindOf (Apply (Let0123456789TSym1 l) arg) ~ KindOf (Let0123456789TSym2 l arg) =>- Let0123456789TSym1KindInference- type instance Apply (Let0123456789TSym1 l) l = Let0123456789TSym2 l l- instance SuppressUnusedWarnings Let0123456789TSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Let0123456789TSym0KindInference GHC.Tuple.())- data Let0123456789TSym0 l- = forall arg. KindOf (Apply Let0123456789TSym0 arg) ~ KindOf (Let0123456789TSym1 arg) =>- Let0123456789TSym0KindInference- type instance Apply Let0123456789TSym0 l = Let0123456789TSym1 l- type family Let0123456789T x y where- Let0123456789T x y = Apply (Apply Tuple2Sym0 x) y- type family Case_0123456789 x y a b arg_0123456789 t where- Case_0123456789 x y a b arg_0123456789 _z_0123456789 = a- type family Lambda_0123456789 x y a b t where- Lambda_0123456789 x y a b arg_0123456789 = Case_0123456789 x y a b arg_0123456789 arg_0123456789- type Lambda_0123456789Sym5 t t t t t = Lambda_0123456789 t t t t t- instance SuppressUnusedWarnings Lambda_0123456789Sym4 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym4KindInference GHC.Tuple.())- data Lambda_0123456789Sym4 l l l l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym4 l l l l) arg) ~ KindOf (Lambda_0123456789Sym5 l l l l arg) =>- Lambda_0123456789Sym4KindInference- type instance Apply (Lambda_0123456789Sym4 l l l l) l = Lambda_0123456789Sym5 l l l l l- instance SuppressUnusedWarnings Lambda_0123456789Sym3 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym3KindInference GHC.Tuple.())- data Lambda_0123456789Sym3 l l l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym3 l l l) arg) ~ KindOf (Lambda_0123456789Sym4 l l l arg) =>- Lambda_0123456789Sym3KindInference- type instance Apply (Lambda_0123456789Sym3 l l l) l = Lambda_0123456789Sym4 l l l l- instance SuppressUnusedWarnings Lambda_0123456789Sym2 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym2KindInference GHC.Tuple.())- data Lambda_0123456789Sym2 l l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym2 l l) arg) ~ KindOf (Lambda_0123456789Sym3 l l arg) =>- Lambda_0123456789Sym2KindInference- type instance Apply (Lambda_0123456789Sym2 l l) l = Lambda_0123456789Sym3 l l l- instance SuppressUnusedWarnings Lambda_0123456789Sym1 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym1KindInference GHC.Tuple.())- data Lambda_0123456789Sym1 l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym1 l) arg) ~ KindOf (Lambda_0123456789Sym2 l arg) =>- Lambda_0123456789Sym1KindInference- type instance Apply (Lambda_0123456789Sym1 l) l = Lambda_0123456789Sym2 l l- instance SuppressUnusedWarnings Lambda_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym0KindInference GHC.Tuple.())- data Lambda_0123456789Sym0 l- = forall arg. KindOf (Apply Lambda_0123456789Sym0 arg) ~ KindOf (Lambda_0123456789Sym1 arg) =>- Lambda_0123456789Sym0KindInference- type instance Apply Lambda_0123456789Sym0 l = Lambda_0123456789Sym1 l- type family Case_0123456789 x y t where- Case_0123456789 x y '(a,- b) = Apply (Apply (Apply (Apply (Apply Lambda_0123456789Sym0 x) y) a) b) b- type family Case_0123456789 x y arg_0123456789 t where- Case_0123456789 x y arg_0123456789 _z_0123456789 = x- type family Lambda_0123456789 x y t where- Lambda_0123456789 x y arg_0123456789 = Case_0123456789 x y arg_0123456789 arg_0123456789- type Lambda_0123456789Sym3 t t t = Lambda_0123456789 t t t- instance SuppressUnusedWarnings Lambda_0123456789Sym2 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym2KindInference GHC.Tuple.())- data Lambda_0123456789Sym2 l l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym2 l l) arg) ~ KindOf (Lambda_0123456789Sym3 l l arg) =>- Lambda_0123456789Sym2KindInference- type instance Apply (Lambda_0123456789Sym2 l l) l = Lambda_0123456789Sym3 l l l- instance SuppressUnusedWarnings Lambda_0123456789Sym1 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym1KindInference GHC.Tuple.())- data Lambda_0123456789Sym1 l l- = forall arg. KindOf (Apply (Lambda_0123456789Sym1 l) arg) ~ KindOf (Lambda_0123456789Sym2 l arg) =>- Lambda_0123456789Sym1KindInference- type instance Apply (Lambda_0123456789Sym1 l) l = Lambda_0123456789Sym2 l l- instance SuppressUnusedWarnings Lambda_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym0KindInference GHC.Tuple.())- data Lambda_0123456789Sym0 l- = forall arg. KindOf (Apply Lambda_0123456789Sym0 arg) ~ KindOf (Lambda_0123456789Sym1 arg) =>- Lambda_0123456789Sym0KindInference- type instance Apply Lambda_0123456789Sym0 l = Lambda_0123456789Sym1 l- type family Case_0123456789 t where- Case_0123456789 '[_z_0123456789,- y_0123456789,- Succ _z_0123456789] = y_0123456789- type family Case_0123456789 t where- Case_0123456789 '[_z_0123456789,- _z_0123456789,- Succ y_0123456789] = y_0123456789- type family Case_0123456789 t where- Case_0123456789 '(y_0123456789,- _z_0123456789,- _z_0123456789) = y_0123456789- type family Case_0123456789 t where- Case_0123456789 '(_z_0123456789,- y_0123456789,- _z_0123456789) = y_0123456789- type family Case_0123456789 t where- Case_0123456789 '(_z_0123456789,- _z_0123456789,- y_0123456789) = y_0123456789- type family Case_0123456789 t where- Case_0123456789 (Pair (Pair y_0123456789 _z_0123456789) _z_0123456789) = y_0123456789- type family Case_0123456789 t where- Case_0123456789 (Pair (Pair _z_0123456789 y_0123456789) _z_0123456789) = y_0123456789- type family Case_0123456789 t where- Case_0123456789 (Pair (Pair _z_0123456789 _z_0123456789) y_0123456789) = y_0123456789- type family Case_0123456789 t where- Case_0123456789 (Pair y_0123456789 _z_0123456789) = y_0123456789- type family Case_0123456789 t where- Case_0123456789 (Pair _z_0123456789 y_0123456789) = y_0123456789- type SillySym1 (t :: a0123456789) = Silly t- instance SuppressUnusedWarnings SillySym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) SillySym0KindInference GHC.Tuple.())- data SillySym0 (l :: TyFun a0123456789 ())- = forall arg. KindOf (Apply SillySym0 arg) ~ KindOf (SillySym1 arg) =>- SillySym0KindInference- type instance Apply SillySym0 l = SillySym1 l- type Foo2Sym1 (t :: (a0123456789, b0123456789)) = Foo2 t- instance SuppressUnusedWarnings Foo2Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo2Sym0KindInference GHC.Tuple.())- data Foo2Sym0 (l :: TyFun (a0123456789, b0123456789) a0123456789)- = forall arg. KindOf (Apply Foo2Sym0 arg) ~ KindOf (Foo2Sym1 arg) =>- Foo2Sym0KindInference- type instance Apply Foo2Sym0 l = Foo2Sym1 l- type Foo1Sym1 (t :: (a0123456789, b0123456789)) = Foo1 t- instance SuppressUnusedWarnings Foo1Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Foo1Sym0KindInference GHC.Tuple.())- data Foo1Sym0 (l :: TyFun (a0123456789, b0123456789) a0123456789)- = forall arg. KindOf (Apply Foo1Sym0 arg) ~ KindOf (Foo1Sym1 arg) =>- Foo1Sym0KindInference- type instance Apply Foo1Sym0 l = Foo1Sym1 l- type LszSym0 = Lsz- type BlimySym0 = Blimy- type TfSym0 = Tf- type TjzSym0 = Tjz- type TtSym0 = Tt- type JzSym0 = Jz- type ZzSym0 = Zz- type FlsSym0 = Fls- type SzSym0 = Sz- type LzSym0 = Lz- type X_0123456789Sym0 = X_0123456789- type X_0123456789Sym0 = X_0123456789- type X_0123456789Sym0 = X_0123456789- type X_0123456789Sym0 = X_0123456789- type family Silly (a :: a) :: () where- Silly x = Case_0123456789 x x- type family Foo2 (a :: (a, b)) :: a where- Foo2 '(x, y) = Case_0123456789 x y (Let0123456789TSym2 x y)- type family Foo1 (a :: (a, b)) :: a where- Foo1 '(x, y) = Apply (Apply (Apply Lambda_0123456789Sym0 x) y) y- type family Lsz :: Nat where- Lsz = Case_0123456789 X_0123456789Sym0- type family Blimy where- Blimy = Case_0123456789 X_0123456789Sym0- type family Tf where- Tf = Case_0123456789 X_0123456789Sym0- type family Tjz where- Tjz = Case_0123456789 X_0123456789Sym0- type family Tt where- Tt = Case_0123456789 X_0123456789Sym0- type family Jz where- Jz = Case_0123456789 X_0123456789Sym0- type family Zz where- Zz = Case_0123456789 X_0123456789Sym0- type family Fls :: Bool where- Fls = Case_0123456789 X_0123456789Sym0- type family Sz where- Sz = Case_0123456789 X_0123456789Sym0- type family Lz where- Lz = Case_0123456789 X_0123456789Sym0- type family X_0123456789 where- X_0123456789 = PrSym0- type family X_0123456789 where- X_0123456789 = ComplexSym0- type family X_0123456789 where- X_0123456789 = TupleSym0- type family X_0123456789 where- X_0123456789 = AListSym0- sSilly :: forall (t :: a). Sing t -> Sing (Apply SillySym0 t :: ())- sFoo2 ::- forall (t :: (a, b)). Sing t -> Sing (Apply Foo2Sym0 t :: a)- sFoo1 ::- forall (t :: (a, b)). Sing t -> Sing (Apply Foo1Sym0 t :: a)- sLsz :: Sing (LszSym0 :: Nat)- sBlimy :: Sing BlimySym0- sTf :: Sing TfSym0- sTjz :: Sing TjzSym0- sTt :: Sing TtSym0- sJz :: Sing JzSym0- sZz :: Sing ZzSym0- sFls :: Sing (FlsSym0 :: Bool)- sSz :: Sing SzSym0- sLz :: Sing LzSym0- sX_0123456789 :: Sing X_0123456789Sym0- sX_0123456789 :: Sing X_0123456789Sym0- sX_0123456789 :: Sing X_0123456789Sym0- sX_0123456789 :: Sing X_0123456789Sym0- sSilly sX- = let- lambda ::- forall x. t ~ x => Sing x -> Sing (Apply SillySym0 t :: ())- lambda x- = case x of {- _s_z_0123456789- -> let- lambda ::- forall _z_0123456789. _z_0123456789 ~ x =>- Sing _z_0123456789 -> Sing (Case_0123456789 x _z_0123456789 :: ())- lambda _z_0123456789 = STuple0- in lambda _s_z_0123456789 } ::- Sing (Case_0123456789 x x :: ())- in lambda sX- sFoo2 (STuple2 sX sY)- = let- lambda ::- forall x y. t ~ Apply (Apply Tuple2Sym0 x) y =>- Sing x -> Sing y -> Sing (Apply Foo2Sym0 t :: a)- lambda x y- = let- sT :: Sing (Let0123456789TSym2 x y)- sT- = applySing- (applySing (singFun2 (Proxy :: Proxy Tuple2Sym0) STuple2) x) y- in case sT of {- STuple2 sA sB- -> let- lambda ::- forall a- b. Apply (Apply Tuple2Sym0 a) b ~ Let0123456789TSym2 x y =>- Sing a- -> Sing b- -> Sing (Case_0123456789 x y (Apply (Apply Tuple2Sym0 a) b) :: a)- lambda a b- = applySing- (singFun1- (Proxy ::- Proxy (Apply (Apply (Apply (Apply Lambda_0123456789Sym0 x) y) a) b))- (\ sArg_0123456789- -> let- lambda ::- forall arg_0123456789.- Sing arg_0123456789- -> Sing (Apply (Apply (Apply (Apply (Apply Lambda_0123456789Sym0 x) y) a) b) arg_0123456789)- lambda arg_0123456789- = case arg_0123456789 of {- _s_z_0123456789- -> let- lambda ::- forall _z_0123456789. _z_0123456789 ~ arg_0123456789 =>- Sing _z_0123456789- -> Sing (Case_0123456789 x y a b arg_0123456789 _z_0123456789)- lambda _z_0123456789 = a- in lambda _s_z_0123456789 } ::- Sing (Case_0123456789 x y a b arg_0123456789 arg_0123456789)- in lambda sArg_0123456789))- b- in lambda sA sB } ::- Sing (Case_0123456789 x y (Let0123456789TSym2 x y) :: a)- in lambda sX sY- sFoo1 (STuple2 sX sY)- = let- lambda ::- forall x y. t ~ Apply (Apply Tuple2Sym0 x) y =>- Sing x -> Sing y -> Sing (Apply Foo1Sym0 t :: a)- lambda x y- = applySing- (singFun1- (Proxy :: Proxy (Apply (Apply Lambda_0123456789Sym0 x) y))- (\ sArg_0123456789- -> let- lambda ::- forall arg_0123456789.- Sing arg_0123456789- -> Sing (Apply (Apply (Apply Lambda_0123456789Sym0 x) y) arg_0123456789)- lambda arg_0123456789- = case arg_0123456789 of {- _s_z_0123456789- -> let- lambda ::- forall _z_0123456789. _z_0123456789 ~ arg_0123456789 =>- Sing _z_0123456789- -> Sing (Case_0123456789 x y arg_0123456789 _z_0123456789)- lambda _z_0123456789 = x- in lambda _s_z_0123456789 } ::- Sing (Case_0123456789 x y arg_0123456789 arg_0123456789)- in lambda sArg_0123456789))- y- in lambda sX sY- sLsz- = case sX_0123456789 of {- SCons _s_z_0123456789- (SCons sY_0123456789 (SCons (SSucc _s_z_0123456789) SNil))- -> let- lambda ::- forall _z_0123456789- y_0123456789- _z_0123456789. Apply (Apply (:$) _z_0123456789) (Apply (Apply (:$) y_0123456789) (Apply (Apply (:$) (Apply SuccSym0 _z_0123456789)) '[])) ~ X_0123456789Sym0 =>- Sing _z_0123456789- -> Sing y_0123456789- -> Sing _z_0123456789- -> Sing (Case_0123456789 (Apply (Apply (:$) _z_0123456789) (Apply (Apply (:$) y_0123456789) (Apply (Apply (:$) (Apply SuccSym0 _z_0123456789)) '[]))) :: Nat)- lambda _z_0123456789 y_0123456789 _z_0123456789 = y_0123456789- in lambda _s_z_0123456789 sY_0123456789 _s_z_0123456789 } ::- Sing (Case_0123456789 X_0123456789Sym0 :: Nat)- sBlimy- = case sX_0123456789 of {- SCons _s_z_0123456789- (SCons _s_z_0123456789 (SCons (SSucc sY_0123456789) SNil))- -> let- lambda ::- forall _z_0123456789- _z_0123456789- y_0123456789. Apply (Apply (:$) _z_0123456789) (Apply (Apply (:$) _z_0123456789) (Apply (Apply (:$) (Apply SuccSym0 y_0123456789)) '[])) ~ X_0123456789Sym0 =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing y_0123456789- -> Sing (Case_0123456789 (Apply (Apply (:$) _z_0123456789) (Apply (Apply (:$) _z_0123456789) (Apply (Apply (:$) (Apply SuccSym0 y_0123456789)) '[]))))- lambda _z_0123456789 _z_0123456789 y_0123456789 = y_0123456789- in lambda _s_z_0123456789 _s_z_0123456789 sY_0123456789 } ::- Sing (Case_0123456789 X_0123456789Sym0)- sTf- = case sX_0123456789 of {- STuple3 sY_0123456789 _s_z_0123456789 _s_z_0123456789- -> let- lambda ::- forall y_0123456789- _z_0123456789- _z_0123456789. Apply (Apply (Apply Tuple3Sym0 y_0123456789) _z_0123456789) _z_0123456789 ~ X_0123456789Sym0 =>- Sing y_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Case_0123456789 (Apply (Apply (Apply Tuple3Sym0 y_0123456789) _z_0123456789) _z_0123456789))- lambda y_0123456789 _z_0123456789 _z_0123456789 = y_0123456789- in lambda sY_0123456789 _s_z_0123456789 _s_z_0123456789 } ::- Sing (Case_0123456789 X_0123456789Sym0)- sTjz- = case sX_0123456789 of {- STuple3 _s_z_0123456789 sY_0123456789 _s_z_0123456789- -> let- lambda ::- forall _z_0123456789- y_0123456789- _z_0123456789. Apply (Apply (Apply Tuple3Sym0 _z_0123456789) y_0123456789) _z_0123456789 ~ X_0123456789Sym0 =>- Sing _z_0123456789- -> Sing y_0123456789- -> Sing _z_0123456789- -> Sing (Case_0123456789 (Apply (Apply (Apply Tuple3Sym0 _z_0123456789) y_0123456789) _z_0123456789))- lambda _z_0123456789 y_0123456789 _z_0123456789 = y_0123456789- in lambda _s_z_0123456789 sY_0123456789 _s_z_0123456789 } ::- Sing (Case_0123456789 X_0123456789Sym0)- sTt- = case sX_0123456789 of {- STuple3 _s_z_0123456789 _s_z_0123456789 sY_0123456789- -> let- lambda ::- forall _z_0123456789- _z_0123456789- y_0123456789. Apply (Apply (Apply Tuple3Sym0 _z_0123456789) _z_0123456789) y_0123456789 ~ X_0123456789Sym0 =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing y_0123456789- -> Sing (Case_0123456789 (Apply (Apply (Apply Tuple3Sym0 _z_0123456789) _z_0123456789) y_0123456789))- lambda _z_0123456789 _z_0123456789 y_0123456789 = y_0123456789- in lambda _s_z_0123456789 _s_z_0123456789 sY_0123456789 } ::- Sing (Case_0123456789 X_0123456789Sym0)- sJz- = case sX_0123456789 of {- SPair (SPair sY_0123456789 _s_z_0123456789) _s_z_0123456789- -> let- lambda ::- forall y_0123456789- _z_0123456789- _z_0123456789. Apply (Apply PairSym0 (Apply (Apply PairSym0 y_0123456789) _z_0123456789)) _z_0123456789 ~ X_0123456789Sym0 =>- Sing y_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Case_0123456789 (Apply (Apply PairSym0 (Apply (Apply PairSym0 y_0123456789) _z_0123456789)) _z_0123456789))- lambda y_0123456789 _z_0123456789 _z_0123456789 = y_0123456789- in lambda sY_0123456789 _s_z_0123456789 _s_z_0123456789 } ::- Sing (Case_0123456789 X_0123456789Sym0)- sZz- = case sX_0123456789 of {- SPair (SPair _s_z_0123456789 sY_0123456789) _s_z_0123456789- -> let- lambda ::- forall _z_0123456789- y_0123456789- _z_0123456789. Apply (Apply PairSym0 (Apply (Apply PairSym0 _z_0123456789) y_0123456789)) _z_0123456789 ~ X_0123456789Sym0 =>- Sing _z_0123456789- -> Sing y_0123456789- -> Sing _z_0123456789- -> Sing (Case_0123456789 (Apply (Apply PairSym0 (Apply (Apply PairSym0 _z_0123456789) y_0123456789)) _z_0123456789))- lambda _z_0123456789 y_0123456789 _z_0123456789 = y_0123456789- in lambda _s_z_0123456789 sY_0123456789 _s_z_0123456789 } ::- Sing (Case_0123456789 X_0123456789Sym0)- sFls- = case sX_0123456789 of {- SPair (SPair _s_z_0123456789 _s_z_0123456789) sY_0123456789- -> let- lambda ::- forall _z_0123456789- _z_0123456789- y_0123456789. Apply (Apply PairSym0 (Apply (Apply PairSym0 _z_0123456789) _z_0123456789)) y_0123456789 ~ X_0123456789Sym0 =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing y_0123456789- -> Sing (Case_0123456789 (Apply (Apply PairSym0 (Apply (Apply PairSym0 _z_0123456789) _z_0123456789)) y_0123456789) :: Bool)- lambda _z_0123456789 _z_0123456789 y_0123456789 = y_0123456789- in lambda _s_z_0123456789 _s_z_0123456789 sY_0123456789 } ::- Sing (Case_0123456789 X_0123456789Sym0 :: Bool)- sSz- = case sX_0123456789 of {- SPair sY_0123456789 _s_z_0123456789- -> let- lambda ::- forall y_0123456789- _z_0123456789. Apply (Apply PairSym0 y_0123456789) _z_0123456789 ~ X_0123456789Sym0 =>- Sing y_0123456789- -> Sing _z_0123456789- -> Sing (Case_0123456789 (Apply (Apply PairSym0 y_0123456789) _z_0123456789))- lambda y_0123456789 _z_0123456789 = y_0123456789- in lambda sY_0123456789 _s_z_0123456789 } ::- Sing (Case_0123456789 X_0123456789Sym0)- sLz- = case sX_0123456789 of {- SPair _s_z_0123456789 sY_0123456789- -> let- lambda ::- forall _z_0123456789- y_0123456789. Apply (Apply PairSym0 _z_0123456789) y_0123456789 ~ X_0123456789Sym0 =>- Sing _z_0123456789- -> Sing y_0123456789- -> Sing (Case_0123456789 (Apply (Apply PairSym0 _z_0123456789) y_0123456789))- lambda _z_0123456789 y_0123456789 = y_0123456789- in lambda _s_z_0123456789 sY_0123456789 } ::- Sing (Case_0123456789 X_0123456789Sym0)- sX_0123456789 = sPr- sX_0123456789 = sComplex- sX_0123456789 = sTuple- sX_0123456789 = sAList
tests/compile-and-dump/Singletons/PatternMatching.ghc80.template view
@@ -90,16 +90,12 @@ = forall (n :: a) (n :: b). z ~ Pair n n => SPair (Sing (n :: a)) (Sing (n :: b)) type SPair = (Sing :: Pair a b -> GHC.Types.Type)- instance (SingKind (KProxy :: KProxy a),- SingKind (KProxy :: KProxy b)) =>- SingKind (KProxy :: KProxy (Pair a b)) where- type DemoteRep (KProxy :: KProxy (Pair a b)) = Pair (DemoteRep (KProxy :: KProxy a)) (DemoteRep (KProxy :: KProxy b))+ instance (SingKind a, SingKind b) => SingKind (Pair a b) where+ type DemoteRep (Pair a b) = Pair (DemoteRep a) (DemoteRep b) fromSing (SPair b b) = Pair (fromSing b) (fromSing b) toSing (Pair b b) = case- GHC.Tuple.(,)- (toSing b :: SomeSing (KProxy :: KProxy a))- (toSing b :: SomeSing (KProxy :: KProxy b))+ GHC.Tuple.(,) (toSing b :: SomeSing a) (toSing b :: SomeSing b) of { GHC.Tuple.(,) (SomeSing c) (SomeSing c) -> SomeSing (SPair c c) } instance (SingI n, SingI n) => SingI (Pair (n :: a) (n :: b)) where
− tests/compile-and-dump/Singletons/Records.ghc710.template
@@ -1,61 +0,0 @@-Singletons/Records.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| data Record a = MkRecord {field1 :: a, field2 :: Bool} |]- ======>- data Record a = MkRecord {field1 :: a, field2 :: Bool}- type Field1Sym1 (t :: Record a0123456789) = Field1 t- instance SuppressUnusedWarnings Field1Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Field1Sym0KindInference GHC.Tuple.())- data Field1Sym0 (l :: TyFun (Record a0123456789) a0123456789)- = forall arg. KindOf (Apply Field1Sym0 arg) ~ KindOf (Field1Sym1 arg) =>- Field1Sym0KindInference- type instance Apply Field1Sym0 l = Field1Sym1 l- type Field2Sym1 (t :: Record a0123456789) = Field2 t- instance SuppressUnusedWarnings Field2Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Field2Sym0KindInference GHC.Tuple.())- data Field2Sym0 (l :: TyFun (Record a0123456789) Bool)- = forall arg. KindOf (Apply Field2Sym0 arg) ~ KindOf (Field2Sym1 arg) =>- Field2Sym0KindInference- type instance Apply Field2Sym0 l = Field2Sym1 l- type family Field1 (a :: Record a) :: a where- Field1 (MkRecord field _z_0123456789) = field- type family Field2 (a :: Record a) :: Bool where- Field2 (MkRecord _z_0123456789 field) = field- type MkRecordSym2 (t :: a0123456789) (t :: Bool) = MkRecord t t- instance SuppressUnusedWarnings MkRecordSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) MkRecordSym1KindInference GHC.Tuple.())- data MkRecordSym1 (l :: a0123456789)- (l :: TyFun Bool (Record a0123456789))- = forall arg. KindOf (Apply (MkRecordSym1 l) arg) ~ KindOf (MkRecordSym2 l arg) =>- MkRecordSym1KindInference- type instance Apply (MkRecordSym1 l) l = MkRecordSym2 l l- instance SuppressUnusedWarnings MkRecordSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) MkRecordSym0KindInference GHC.Tuple.())- data MkRecordSym0 (l :: TyFun a0123456789 (TyFun Bool (Record a0123456789)- -> *))- = forall arg. KindOf (Apply MkRecordSym0 arg) ~ KindOf (MkRecordSym1 arg) =>- MkRecordSym0KindInference- type instance Apply MkRecordSym0 l = MkRecordSym1 l- data instance Sing (z :: Record a)- = forall (n :: a) (n :: Bool). z ~ MkRecord n n =>- SMkRecord {sField1 :: Sing (n :: a), sField2 :: Sing (n :: Bool)}- type SRecord = (Sing :: Record a -> *)- instance SingKind (KProxy :: KProxy a) =>- SingKind (KProxy :: KProxy (Record a)) where- type DemoteRep (KProxy :: KProxy (Record a)) = Record (DemoteRep (KProxy :: KProxy a))- fromSing (SMkRecord b b) = MkRecord (fromSing b) (fromSing b)- toSing (MkRecord b b)- = case- GHC.Tuple.(,)- (toSing b :: SomeSing (KProxy :: KProxy a))- (toSing b :: SomeSing (KProxy :: KProxy Bool))- of {- GHC.Tuple.(,) (SomeSing c) (SomeSing c)- -> SomeSing (SMkRecord c c) }- instance (SingI n, SingI n) =>- SingI (MkRecord (n :: a) (n :: Bool)) where- sing = SMkRecord sing sing
tests/compile-and-dump/Singletons/Records.ghc80.template view
@@ -45,15 +45,12 @@ SMkRecord {sField1 :: (Sing (n :: a)), sField2 :: (Sing (n :: Bool))} type SRecord = (Sing :: Record a -> GHC.Types.Type)- instance SingKind (KProxy :: KProxy a) =>- SingKind (KProxy :: KProxy (Record a)) where- type DemoteRep (KProxy :: KProxy (Record a)) = Record (DemoteRep (KProxy :: KProxy a))+ instance SingKind a => SingKind (Record a) where+ type DemoteRep (Record a) = Record (DemoteRep a) fromSing (SMkRecord b b) = MkRecord (fromSing b) (fromSing b) toSing (MkRecord b b) = case- GHC.Tuple.(,)- (toSing b :: SomeSing (KProxy :: KProxy a))- (toSing b :: SomeSing (KProxy :: KProxy Bool))+ GHC.Tuple.(,) (toSing b :: SomeSing a) (toSing b :: SomeSing Bool) of { GHC.Tuple.(,) (SomeSing c) (SomeSing c) -> SomeSing (SMkRecord c c) }
− tests/compile-and-dump/Singletons/ReturnFunc.ghc710.template
@@ -1,94 +0,0 @@-Singletons/ReturnFunc.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| returnFunc :: Nat -> Nat -> Nat- returnFunc _ = Succ- id :: a -> a- id x = x- idFoo :: c -> a -> a- idFoo _ = id |]- ======>- returnFunc :: Nat -> Nat -> Nat- returnFunc _ = Succ- id :: forall a. a -> a- id x = x- idFoo :: forall c a. c -> a -> a- idFoo _ = id- type IdSym1 (t :: a0123456789) = Id t- instance SuppressUnusedWarnings IdSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) IdSym0KindInference GHC.Tuple.())- data IdSym0 (l :: TyFun a0123456789 a0123456789)- = forall arg. KindOf (Apply IdSym0 arg) ~ KindOf (IdSym1 arg) =>- IdSym0KindInference- type instance Apply IdSym0 l = IdSym1 l- type IdFooSym2 (t :: c0123456789) (t :: a0123456789) = IdFoo t t- instance SuppressUnusedWarnings IdFooSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) IdFooSym1KindInference GHC.Tuple.())- data IdFooSym1 (l :: c0123456789)- (l :: TyFun a0123456789 a0123456789)- = forall arg. KindOf (Apply (IdFooSym1 l) arg) ~ KindOf (IdFooSym2 l arg) =>- IdFooSym1KindInference- type instance Apply (IdFooSym1 l) l = IdFooSym2 l l- instance SuppressUnusedWarnings IdFooSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) IdFooSym0KindInference GHC.Tuple.())- data IdFooSym0 (l :: TyFun c0123456789 (TyFun a0123456789 a0123456789- -> *))- = forall arg. KindOf (Apply IdFooSym0 arg) ~ KindOf (IdFooSym1 arg) =>- IdFooSym0KindInference- type instance Apply IdFooSym0 l = IdFooSym1 l- type ReturnFuncSym2 (t :: Nat) (t :: Nat) = ReturnFunc t t- instance SuppressUnusedWarnings ReturnFuncSym1 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) ReturnFuncSym1KindInference GHC.Tuple.())- data ReturnFuncSym1 (l :: Nat) (l :: TyFun Nat Nat)- = forall arg. KindOf (Apply (ReturnFuncSym1 l) arg) ~ KindOf (ReturnFuncSym2 l arg) =>- ReturnFuncSym1KindInference- type instance Apply (ReturnFuncSym1 l) l = ReturnFuncSym2 l l- instance SuppressUnusedWarnings ReturnFuncSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) ReturnFuncSym0KindInference GHC.Tuple.())- data ReturnFuncSym0 (l :: TyFun Nat (TyFun Nat Nat -> *))- = forall arg. KindOf (Apply ReturnFuncSym0 arg) ~ KindOf (ReturnFuncSym1 arg) =>- ReturnFuncSym0KindInference- type instance Apply ReturnFuncSym0 l = ReturnFuncSym1 l- type family Id (a :: a) :: a where- Id x = x- type family IdFoo (a :: c) (a :: a) :: a where- IdFoo _z_0123456789 a_0123456789 = Apply IdSym0 a_0123456789- type family ReturnFunc (a :: Nat) (a :: Nat) :: Nat where- ReturnFunc _z_0123456789 a_0123456789 = Apply SuccSym0 a_0123456789- sId :: forall (t :: a). Sing t -> Sing (Apply IdSym0 t :: a)- sIdFoo ::- forall (t :: c) (t :: a).- Sing t -> Sing t -> Sing (Apply (Apply IdFooSym0 t) t :: a)- sReturnFunc ::- forall (t :: Nat) (t :: Nat).- Sing t -> Sing t -> Sing (Apply (Apply ReturnFuncSym0 t) t :: Nat)- sId sX- = let- lambda :: forall x. t ~ x => Sing x -> Sing (Apply IdSym0 t :: a)- lambda x = x- in lambda sX- sIdFoo _s_z_0123456789 sA_0123456789- = let- lambda ::- forall _z_0123456789 a_0123456789. (t ~ _z_0123456789,- t ~ a_0123456789) =>- Sing _z_0123456789- -> Sing a_0123456789 -> Sing (Apply (Apply IdFooSym0 t) t :: a)- lambda _z_0123456789 a_0123456789- = applySing (singFun1 (Proxy :: Proxy IdSym0) sId) a_0123456789- in lambda _s_z_0123456789 sA_0123456789- sReturnFunc _s_z_0123456789 sA_0123456789- = let- lambda ::- forall _z_0123456789 a_0123456789. (t ~ _z_0123456789,- t ~ a_0123456789) =>- Sing _z_0123456789- -> Sing a_0123456789- -> Sing (Apply (Apply ReturnFuncSym0 t) t :: Nat)- lambda _z_0123456789 a_0123456789- = applySing (singFun1 (Proxy :: Proxy SuccSym0) SSucc) a_0123456789- in lambda _s_z_0123456789 sA_0123456789
− tests/compile-and-dump/Singletons/Sections.ghc710.template
@@ -1,142 +0,0 @@-Singletons/Sections.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| (+) :: Nat -> Nat -> Nat- Zero + m = m- (Succ n) + m = Succ (n + m)- foo1 :: [Nat]- foo1 = map ((Succ Zero) +) [Zero, Succ Zero]- foo2 :: [Nat]- foo2 = map (+ (Succ Zero)) [Zero, Succ Zero]- foo3 :: [Nat]- foo3 = zipWith (+) [Succ Zero, Succ Zero] [Zero, Succ Zero] |]- ======>- (+) :: Nat -> Nat -> Nat- (+) Zero m = m- (+) (Succ n) m = Succ (n + m)- foo1 :: [Nat]- foo1 = map (Succ Zero +) [Zero, Succ Zero]- foo2 :: [Nat]- foo2 = map (+ Succ Zero) [Zero, Succ Zero]- foo3 :: [Nat]- foo3 = zipWith (+) [Succ Zero, Succ Zero] [Zero, Succ Zero]- type family Lambda_0123456789 t where- Lambda_0123456789 lhs_0123456789 = Apply (Apply (:+$) lhs_0123456789) (Apply SuccSym0 ZeroSym0)- type Lambda_0123456789Sym1 t = Lambda_0123456789 t- instance SuppressUnusedWarnings Lambda_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Lambda_0123456789Sym0KindInference GHC.Tuple.())- data Lambda_0123456789Sym0 l- = forall arg. KindOf (Apply Lambda_0123456789Sym0 arg) ~ KindOf (Lambda_0123456789Sym1 arg) =>- Lambda_0123456789Sym0KindInference- type instance Apply Lambda_0123456789Sym0 l = Lambda_0123456789Sym1 l- type (:+$$$) (t :: Nat) (t :: Nat) = (:+) t t- instance SuppressUnusedWarnings (:+$$) where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) (:+$$###) GHC.Tuple.())- data (:+$$) (l :: Nat) (l :: TyFun Nat Nat)- = forall arg. KindOf (Apply ((:+$$) l) arg) ~ KindOf ((:+$$$) l arg) =>- :+$$###- type instance Apply ((:+$$) l) l = (:+$$$) l l- instance SuppressUnusedWarnings (:+$) where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) (:+$###) GHC.Tuple.())- data (:+$) (l :: TyFun Nat (TyFun Nat Nat -> *))- = forall arg. KindOf (Apply (:+$) arg) ~ KindOf ((:+$$) arg) =>- :+$###- type instance Apply (:+$) l = (:+$$) l- type Foo1Sym0 = Foo1- type Foo2Sym0 = Foo2- type Foo3Sym0 = Foo3- type family (:+) (a :: Nat) (a :: Nat) :: Nat where- (:+) Zero m = m- (:+) (Succ n) m = Apply SuccSym0 (Apply (Apply (:+$) n) m)- type family Foo1 :: [Nat] where- Foo1 = Apply (Apply MapSym0 (Apply (:+$) (Apply SuccSym0 ZeroSym0))) (Apply (Apply (:$) ZeroSym0) (Apply (Apply (:$) (Apply SuccSym0 ZeroSym0)) '[]))- type family Foo2 :: [Nat] where- Foo2 = Apply (Apply MapSym0 Lambda_0123456789Sym0) (Apply (Apply (:$) ZeroSym0) (Apply (Apply (:$) (Apply SuccSym0 ZeroSym0)) '[]))- type family Foo3 :: [Nat] where- Foo3 = Apply (Apply (Apply ZipWithSym0 (:+$)) (Apply (Apply (:$) (Apply SuccSym0 ZeroSym0)) (Apply (Apply (:$) (Apply SuccSym0 ZeroSym0)) '[]))) (Apply (Apply (:$) ZeroSym0) (Apply (Apply (:$) (Apply SuccSym0 ZeroSym0)) '[]))- (%:+) ::- forall (t :: Nat) (t :: Nat).- Sing t -> Sing t -> Sing (Apply (Apply (:+$) t) t :: Nat)- sFoo1 :: Sing (Foo1Sym0 :: [Nat])- sFoo2 :: Sing (Foo2Sym0 :: [Nat])- sFoo3 :: Sing (Foo3Sym0 :: [Nat])- (%:+) SZero sM- = let- lambda ::- forall m. (t ~ ZeroSym0, t ~ m) =>- Sing m -> Sing (Apply (Apply (:+$) t) t :: Nat)- lambda m = m- in lambda sM- (%:+) (SSucc sN) sM- = let- lambda ::- forall n m. (t ~ Apply SuccSym0 n, t ~ m) =>- Sing n -> Sing m -> Sing (Apply (Apply (:+$) t) t :: Nat)- lambda n m- = applySing- (singFun1 (Proxy :: Proxy SuccSym0) SSucc)- (applySing (applySing (singFun2 (Proxy :: Proxy (:+$)) (%:+)) n) m)- in lambda sN sM- sFoo1- = applySing- (applySing- (singFun2 (Proxy :: Proxy MapSym0) sMap)- (applySing- (singFun2 (Proxy :: Proxy (:+$)) (%:+))- (applySing (singFun1 (Proxy :: Proxy SuccSym0) SSucc) SZero)))- (applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) SZero)- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing (singFun1 (Proxy :: Proxy SuccSym0) SSucc) SZero))- SNil))- sFoo2- = applySing- (applySing- (singFun2 (Proxy :: Proxy MapSym0) sMap)- (singFun1- (Proxy :: Proxy Lambda_0123456789Sym0)- (\ sLhs_0123456789- -> let- lambda ::- forall lhs_0123456789.- Sing lhs_0123456789- -> Sing (Apply Lambda_0123456789Sym0 lhs_0123456789)- lambda lhs_0123456789- = applySing- (applySing (singFun2 (Proxy :: Proxy (:+$)) (%:+)) lhs_0123456789)- (applySing (singFun1 (Proxy :: Proxy SuccSym0) SSucc) SZero)- in lambda sLhs_0123456789)))- (applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) SZero)- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing (singFun1 (Proxy :: Proxy SuccSym0) SSucc) SZero))- SNil))- sFoo3- = applySing- (applySing- (applySing- (singFun3 (Proxy :: Proxy ZipWithSym0) sZipWith)- (singFun2 (Proxy :: Proxy (:+$)) (%:+)))- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing (singFun1 (Proxy :: Proxy SuccSym0) SSucc) SZero))- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing (singFun1 (Proxy :: Proxy SuccSym0) SSucc) SZero))- SNil)))- (applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) SZero)- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing (singFun1 (Proxy :: Proxy SuccSym0) SSucc) SZero))- SNil))
− tests/compile-and-dump/Singletons/Star.ghc710.template
@@ -1,587 +0,0 @@-Singletons/Star.hs:0:0:: Splicing declarations- singletonStar [''Nat, ''Int, ''String, ''Maybe, ''Vec]- ======>- data Rep- = Singletons.Star.Nat |- Singletons.Star.Int |- Singletons.Star.String |- Singletons.Star.Maybe Rep |- Singletons.Star.Vec Rep Nat- deriving (Eq, Show, Read)- type family Equals_0123456789 (a :: *) (b :: *) :: Bool where- Equals_0123456789 Nat Nat = TrueSym0- Equals_0123456789 Int Int = TrueSym0- Equals_0123456789 String String = TrueSym0- Equals_0123456789 (Maybe a) (Maybe b) = (:==) a b- Equals_0123456789 (Vec a a) (Vec b b) = (:&&) ((:==) a b) ((:==) a b)- Equals_0123456789 (a :: *) (b :: *) = FalseSym0- instance PEq (KProxy :: KProxy *) where- type (:==) (a :: *) (b :: *) = Equals_0123456789 a b- type NatSym0 = Nat- type IntSym0 = Int- type StringSym0 = String- type MaybeSym1 (t :: *) = Maybe t- instance Data.Singletons.SuppressUnusedWarnings.SuppressUnusedWarnings MaybeSym0 where- Data.Singletons.SuppressUnusedWarnings.suppressUnusedWarnings _- = snd (GHC.Tuple.(,) MaybeSym0KindInference GHC.Tuple.())- data MaybeSym0 (l :: TyFun * *)- = forall arg. KindOf (Apply MaybeSym0 arg) ~ KindOf (MaybeSym1 arg) =>- MaybeSym0KindInference- type instance Apply MaybeSym0 l = MaybeSym1 l- type VecSym2 (t :: *) (t :: Nat) = Vec t t- instance Data.Singletons.SuppressUnusedWarnings.SuppressUnusedWarnings VecSym1 where- Data.Singletons.SuppressUnusedWarnings.suppressUnusedWarnings _- = snd (GHC.Tuple.(,) VecSym1KindInference GHC.Tuple.())- data VecSym1 (l :: *) (l :: TyFun Nat *)- = forall arg. KindOf (Apply (VecSym1 l) arg) ~ KindOf (VecSym2 l arg) =>- VecSym1KindInference- type instance Apply (VecSym1 l) l = VecSym2 l l- instance Data.Singletons.SuppressUnusedWarnings.SuppressUnusedWarnings VecSym0 where- Data.Singletons.SuppressUnusedWarnings.suppressUnusedWarnings _- = snd (GHC.Tuple.(,) VecSym0KindInference GHC.Tuple.())- data VecSym0 (l :: TyFun * (TyFun Nat * -> *))- = forall arg. KindOf (Apply VecSym0 arg) ~ KindOf (VecSym1 arg) =>- VecSym0KindInference- type instance Apply VecSym0 l = VecSym1 l- type family Compare_0123456789 (a :: *) (a :: *) :: Ordering where- Compare_0123456789 Nat Nat = Apply (Apply (Apply FoldlSym0 ThenCmpSym0) EQSym0) '[]- Compare_0123456789 Int Int = Apply (Apply (Apply FoldlSym0 ThenCmpSym0) EQSym0) '[]- Compare_0123456789 String String = Apply (Apply (Apply FoldlSym0 ThenCmpSym0) EQSym0) '[]- Compare_0123456789 (Maybe a_0123456789) (Maybe b_0123456789) = Apply (Apply (Apply FoldlSym0 ThenCmpSym0) EQSym0) (Apply (Apply (:$) (Apply (Apply CompareSym0 a_0123456789) b_0123456789)) '[])- Compare_0123456789 (Vec a_0123456789 a_0123456789) (Vec b_0123456789 b_0123456789) = Apply (Apply (Apply FoldlSym0 ThenCmpSym0) EQSym0) (Apply (Apply (:$) (Apply (Apply CompareSym0 a_0123456789) b_0123456789)) (Apply (Apply (:$) (Apply (Apply CompareSym0 a_0123456789) b_0123456789)) '[]))- Compare_0123456789 Nat Int = LTSym0- Compare_0123456789 Nat String = LTSym0- Compare_0123456789 Nat (Maybe _z_0123456789) = LTSym0- Compare_0123456789 Nat (Vec _z_0123456789 _z_0123456789) = LTSym0- Compare_0123456789 Int Nat = GTSym0- Compare_0123456789 Int String = LTSym0- Compare_0123456789 Int (Maybe _z_0123456789) = LTSym0- Compare_0123456789 Int (Vec _z_0123456789 _z_0123456789) = LTSym0- Compare_0123456789 String Nat = GTSym0- Compare_0123456789 String Int = GTSym0- Compare_0123456789 String (Maybe _z_0123456789) = LTSym0- Compare_0123456789 String (Vec _z_0123456789 _z_0123456789) = LTSym0- Compare_0123456789 (Maybe _z_0123456789) Nat = GTSym0- Compare_0123456789 (Maybe _z_0123456789) Int = GTSym0- Compare_0123456789 (Maybe _z_0123456789) String = GTSym0- Compare_0123456789 (Maybe _z_0123456789) (Vec _z_0123456789 _z_0123456789) = LTSym0- Compare_0123456789 (Vec _z_0123456789 _z_0123456789) Nat = GTSym0- Compare_0123456789 (Vec _z_0123456789 _z_0123456789) Int = GTSym0- Compare_0123456789 (Vec _z_0123456789 _z_0123456789) String = GTSym0- Compare_0123456789 (Vec _z_0123456789 _z_0123456789) (Maybe _z_0123456789) = GTSym0- type Compare_0123456789Sym2 (t :: *) (t :: *) =- Compare_0123456789 t t- instance Data.Singletons.SuppressUnusedWarnings.SuppressUnusedWarnings Compare_0123456789Sym1 where- Data.Singletons.SuppressUnusedWarnings.suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Compare_0123456789Sym1KindInference GHC.Tuple.())- data Compare_0123456789Sym1 (l :: *) (l :: TyFun * Ordering)- = forall arg. KindOf (Apply (Compare_0123456789Sym1 l) arg) ~ KindOf (Compare_0123456789Sym2 l arg) =>- Compare_0123456789Sym1KindInference- type instance Apply (Compare_0123456789Sym1 l) l = Compare_0123456789Sym2 l l- instance Data.Singletons.SuppressUnusedWarnings.SuppressUnusedWarnings Compare_0123456789Sym0 where- Data.Singletons.SuppressUnusedWarnings.suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) Compare_0123456789Sym0KindInference GHC.Tuple.())- data Compare_0123456789Sym0 (l :: TyFun * (TyFun * Ordering -> *))- = forall arg. KindOf (Apply Compare_0123456789Sym0 arg) ~ KindOf (Compare_0123456789Sym1 arg) =>- Compare_0123456789Sym0KindInference- type instance Apply Compare_0123456789Sym0 l = Compare_0123456789Sym1 l- instance POrd (KProxy :: KProxy *) where- type Compare (a :: *) (a :: *) = Apply (Apply Compare_0123456789Sym0 a) a- instance (SOrd (KProxy :: KProxy *),- SOrd (KProxy :: KProxy Nat)) =>- SOrd (KProxy :: KProxy *) where- sCompare ::- forall (t0 :: *) (t1 :: *).- Sing t0- -> Sing t1- -> Sing (Apply (Apply (CompareSym0 :: TyFun * (TyFun * Ordering- -> *)- -> *) t0 :: TyFun * Ordering -> *) t1 :: Ordering)- sCompare SNat SNat- = let- lambda ::- (t0 ~ NatSym0, t1 ~ NatSym0) =>- Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- = applySing- (applySing- (applySing- (singFun3 (Data.Proxy.Proxy :: Data.Proxy.Proxy FoldlSym0) sFoldl)- (singFun2- (Data.Proxy.Proxy :: Data.Proxy.Proxy ThenCmpSym0) sThenCmp))- SEQ)- SNil- in lambda- sCompare SInt SInt- = let- lambda ::- (t0 ~ IntSym0, t1 ~ IntSym0) =>- Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- = applySing- (applySing- (applySing- (singFun3 (Data.Proxy.Proxy :: Data.Proxy.Proxy FoldlSym0) sFoldl)- (singFun2- (Data.Proxy.Proxy :: Data.Proxy.Proxy ThenCmpSym0) sThenCmp))- SEQ)- SNil- in lambda- sCompare SString SString- = let- lambda ::- (t0 ~ StringSym0, t1 ~ StringSym0) =>- Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda- = applySing- (applySing- (applySing- (singFun3 (Data.Proxy.Proxy :: Data.Proxy.Proxy FoldlSym0) sFoldl)- (singFun2- (Data.Proxy.Proxy :: Data.Proxy.Proxy ThenCmpSym0) sThenCmp))- SEQ)- SNil- in lambda- sCompare (SMaybe sA_0123456789) (SMaybe sB_0123456789)- = let- lambda ::- forall a_0123456789- b_0123456789. (t0 ~ Apply MaybeSym0 a_0123456789,- t1 ~ Apply MaybeSym0 b_0123456789) =>- Sing a_0123456789- -> Sing b_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda a_0123456789 b_0123456789- = applySing- (applySing- (applySing- (singFun3 (Data.Proxy.Proxy :: Data.Proxy.Proxy FoldlSym0) sFoldl)- (singFun2- (Data.Proxy.Proxy :: Data.Proxy.Proxy ThenCmpSym0) sThenCmp))- SEQ)- (applySing- (applySing- (singFun2 (Data.Proxy.Proxy :: Data.Proxy.Proxy (:$)) SCons)- (applySing- (applySing- (singFun2- (Data.Proxy.Proxy :: Data.Proxy.Proxy CompareSym0) sCompare)- a_0123456789)- b_0123456789))- SNil)- in lambda sA_0123456789 sB_0123456789- sCompare- (SVec sA_0123456789 sA_0123456789)- (SVec sB_0123456789 sB_0123456789)- = let- lambda ::- forall a_0123456789- a_0123456789- b_0123456789- b_0123456789. (t0 ~ Apply (Apply VecSym0 a_0123456789) a_0123456789,- t1 ~ Apply (Apply VecSym0 b_0123456789) b_0123456789) =>- Sing a_0123456789- -> Sing a_0123456789- -> Sing b_0123456789- -> Sing b_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda a_0123456789 a_0123456789 b_0123456789 b_0123456789- = applySing- (applySing- (applySing- (singFun3 (Data.Proxy.Proxy :: Data.Proxy.Proxy FoldlSym0) sFoldl)- (singFun2- (Data.Proxy.Proxy :: Data.Proxy.Proxy ThenCmpSym0) sThenCmp))- SEQ)- (applySing- (applySing- (singFun2 (Data.Proxy.Proxy :: Data.Proxy.Proxy (:$)) SCons)- (applySing- (applySing- (singFun2- (Data.Proxy.Proxy :: Data.Proxy.Proxy CompareSym0) sCompare)- a_0123456789)- b_0123456789))- (applySing- (applySing- (singFun2 (Data.Proxy.Proxy :: Data.Proxy.Proxy (:$)) SCons)- (applySing- (applySing- (singFun2- (Data.Proxy.Proxy :: Data.Proxy.Proxy CompareSym0) sCompare)- a_0123456789)- b_0123456789))- SNil))- in lambda sA_0123456789 sA_0123456789 sB_0123456789 sB_0123456789- sCompare SNat SInt- = let- lambda ::- (t0 ~ NatSym0, t1 ~ IntSym0) =>- Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda = SLT- in lambda- sCompare SNat SString- = let- lambda ::- (t0 ~ NatSym0, t1 ~ StringSym0) =>- Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda = SLT- in lambda- sCompare SNat (SMaybe _s_z_0123456789)- = let- lambda ::- forall _z_0123456789. (t0 ~ NatSym0,- t1 ~ Apply MaybeSym0 _z_0123456789) =>- Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda _z_0123456789 = SLT- in lambda _s_z_0123456789- sCompare SNat (SVec _s_z_0123456789 _s_z_0123456789)- = let- lambda ::- forall _z_0123456789 _z_0123456789. (t0 ~ NatSym0,- t1 ~ Apply (Apply VecSym0 _z_0123456789) _z_0123456789) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda _z_0123456789 _z_0123456789 = SLT- in lambda _s_z_0123456789 _s_z_0123456789- sCompare SInt SNat- = let- lambda ::- (t0 ~ IntSym0, t1 ~ NatSym0) =>- Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda = SGT- in lambda- sCompare SInt SString- = let- lambda ::- (t0 ~ IntSym0, t1 ~ StringSym0) =>- Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda = SLT- in lambda- sCompare SInt (SMaybe _s_z_0123456789)- = let- lambda ::- forall _z_0123456789. (t0 ~ IntSym0,- t1 ~ Apply MaybeSym0 _z_0123456789) =>- Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda _z_0123456789 = SLT- in lambda _s_z_0123456789- sCompare SInt (SVec _s_z_0123456789 _s_z_0123456789)- = let- lambda ::- forall _z_0123456789 _z_0123456789. (t0 ~ IntSym0,- t1 ~ Apply (Apply VecSym0 _z_0123456789) _z_0123456789) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda _z_0123456789 _z_0123456789 = SLT- in lambda _s_z_0123456789 _s_z_0123456789- sCompare SString SNat- = let- lambda ::- (t0 ~ StringSym0, t1 ~ NatSym0) =>- Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda = SGT- in lambda- sCompare SString SInt- = let- lambda ::- (t0 ~ StringSym0, t1 ~ IntSym0) =>- Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda = SGT- in lambda- sCompare SString (SMaybe _s_z_0123456789)- = let- lambda ::- forall _z_0123456789. (t0 ~ StringSym0,- t1 ~ Apply MaybeSym0 _z_0123456789) =>- Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda _z_0123456789 = SLT- in lambda _s_z_0123456789- sCompare SString (SVec _s_z_0123456789 _s_z_0123456789)- = let- lambda ::- forall _z_0123456789 _z_0123456789. (t0 ~ StringSym0,- t1 ~ Apply (Apply VecSym0 _z_0123456789) _z_0123456789) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda _z_0123456789 _z_0123456789 = SLT- in lambda _s_z_0123456789 _s_z_0123456789- sCompare (SMaybe _s_z_0123456789) SNat- = let- lambda ::- forall _z_0123456789. (t0 ~ Apply MaybeSym0 _z_0123456789,- t1 ~ NatSym0) =>- Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda _z_0123456789 = SGT- in lambda _s_z_0123456789- sCompare (SMaybe _s_z_0123456789) SInt- = let- lambda ::- forall _z_0123456789. (t0 ~ Apply MaybeSym0 _z_0123456789,- t1 ~ IntSym0) =>- Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda _z_0123456789 = SGT- in lambda _s_z_0123456789- sCompare (SMaybe _s_z_0123456789) SString- = let- lambda ::- forall _z_0123456789. (t0 ~ Apply MaybeSym0 _z_0123456789,- t1 ~ StringSym0) =>- Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda _z_0123456789 = SGT- in lambda _s_z_0123456789- sCompare- (SMaybe _s_z_0123456789)- (SVec _s_z_0123456789 _s_z_0123456789)- = let- lambda ::- forall _z_0123456789- _z_0123456789- _z_0123456789. (t0 ~ Apply MaybeSym0 _z_0123456789,- t1 ~ Apply (Apply VecSym0 _z_0123456789) _z_0123456789) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda _z_0123456789 _z_0123456789 _z_0123456789 = SLT- in lambda _s_z_0123456789 _s_z_0123456789 _s_z_0123456789- sCompare (SVec _s_z_0123456789 _s_z_0123456789) SNat- = let- lambda ::- forall _z_0123456789- _z_0123456789. (t0 ~ Apply (Apply VecSym0 _z_0123456789) _z_0123456789,- t1 ~ NatSym0) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda _z_0123456789 _z_0123456789 = SGT- in lambda _s_z_0123456789 _s_z_0123456789- sCompare (SVec _s_z_0123456789 _s_z_0123456789) SInt- = let- lambda ::- forall _z_0123456789- _z_0123456789. (t0 ~ Apply (Apply VecSym0 _z_0123456789) _z_0123456789,- t1 ~ IntSym0) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda _z_0123456789 _z_0123456789 = SGT- in lambda _s_z_0123456789 _s_z_0123456789- sCompare (SVec _s_z_0123456789 _s_z_0123456789) SString- = let- lambda ::- forall _z_0123456789- _z_0123456789. (t0 ~ Apply (Apply VecSym0 _z_0123456789) _z_0123456789,- t1 ~ StringSym0) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda _z_0123456789 _z_0123456789 = SGT- in lambda _s_z_0123456789 _s_z_0123456789- sCompare- (SVec _s_z_0123456789 _s_z_0123456789)- (SMaybe _s_z_0123456789)- = let- lambda ::- forall _z_0123456789- _z_0123456789- _z_0123456789. (t0 ~ Apply (Apply VecSym0 _z_0123456789) _z_0123456789,- t1 ~ Apply MaybeSym0 _z_0123456789) =>- Sing _z_0123456789- -> Sing _z_0123456789- -> Sing _z_0123456789- -> Sing (Apply (Apply CompareSym0 t0) t1 :: Ordering)- lambda _z_0123456789 _z_0123456789 _z_0123456789 = SGT- in lambda _s_z_0123456789 _s_z_0123456789 _s_z_0123456789- data instance Sing (z :: *)- = z ~ Nat => SNat |- z ~ Int => SInt |- z ~ String => SString |- forall (n :: *). z ~ Maybe n => SMaybe (Sing (n :: *)) |- forall (n :: *) (n :: Nat). z ~ Vec n n =>- SVec (Sing (n :: *)) (Sing (n :: Nat))- type SRep = (Sing :: * -> *)- instance SingKind (KProxy :: KProxy *) where- type DemoteRep (KProxy :: KProxy *) = Rep- fromSing SNat = Singletons.Star.Nat- fromSing SInt = Singletons.Star.Int- fromSing SString = Singletons.Star.String- fromSing (SMaybe b) = Singletons.Star.Maybe (fromSing b)- fromSing (SVec b b) = Singletons.Star.Vec (fromSing b) (fromSing b)- toSing Singletons.Star.Nat = SomeSing SNat- toSing Singletons.Star.Int = SomeSing SInt- toSing Singletons.Star.String = SomeSing SString- toSing (Singletons.Star.Maybe b)- = case toSing b :: SomeSing (KProxy :: KProxy *) of {- SomeSing c -> SomeSing (SMaybe c) }- toSing (Singletons.Star.Vec b b)- = case- GHC.Tuple.(,)- (toSing b :: SomeSing (KProxy :: KProxy *))- (toSing b :: SomeSing (KProxy :: KProxy Nat))- of {- GHC.Tuple.(,) (SomeSing c) (SomeSing c) -> SomeSing (SVec c c) }- instance SEq (KProxy :: KProxy *) where- (%:==) SNat SNat = STrue- (%:==) SNat SInt = SFalse- (%:==) SNat SString = SFalse- (%:==) SNat (SMaybe _) = SFalse- (%:==) SNat (SVec _ _) = SFalse- (%:==) SInt SNat = SFalse- (%:==) SInt SInt = STrue- (%:==) SInt SString = SFalse- (%:==) SInt (SMaybe _) = SFalse- (%:==) SInt (SVec _ _) = SFalse- (%:==) SString SNat = SFalse- (%:==) SString SInt = SFalse- (%:==) SString SString = STrue- (%:==) SString (SMaybe _) = SFalse- (%:==) SString (SVec _ _) = SFalse- (%:==) (SMaybe _) SNat = SFalse- (%:==) (SMaybe _) SInt = SFalse- (%:==) (SMaybe _) SString = SFalse- (%:==) (SMaybe a) (SMaybe b) = (%:==) a b- (%:==) (SMaybe _) (SVec _ _) = SFalse- (%:==) (SVec _ _) SNat = SFalse- (%:==) (SVec _ _) SInt = SFalse- (%:==) (SVec _ _) SString = SFalse- (%:==) (SVec _ _) (SMaybe _) = SFalse- (%:==) (SVec a a) (SVec b b) = (%:&&) ((%:==) a b) ((%:==) a b)- instance SDecide (KProxy :: KProxy *) where- (%~) SNat SNat = Proved Refl- (%~) SNat SInt- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SNat SString- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SNat (SMaybe _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SNat (SVec _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SInt SNat- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SInt SInt = Proved Refl- (%~) SInt SString- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SInt (SMaybe _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SInt (SVec _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SString SNat- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SString SInt- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SString SString = Proved Refl- (%~) SString (SMaybe _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) SString (SVec _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SMaybe _) SNat- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SMaybe _) SInt- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SMaybe _) SString- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SMaybe a) (SMaybe b)- = case (%~) a b of {- Proved Refl -> Proved Refl- Disproved contra- -> Disproved (\ refl -> case refl of { Refl -> contra Refl }) }- (%~) (SMaybe _) (SVec _ _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SVec _ _) SNat- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SVec _ _) SInt- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SVec _ _) SString- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SVec _ _) (SMaybe _)- = Disproved- (\ x- -> case x of {- _ -> error "Empty case reached -- this should be impossible" })- (%~) (SVec a a) (SVec b b)- = case GHC.Tuple.(,) ((%~) a b) ((%~) a b) of {- GHC.Tuple.(,) (Proved Refl) (Proved Refl) -> Proved Refl- GHC.Tuple.(,) (Disproved contra) _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })- GHC.Tuple.(,) _ (Disproved contra)- -> Disproved (\ refl -> case refl of { Refl -> contra Refl }) }- instance SingI Nat where- sing = SNat- instance SingI Int where- sing = SInt- instance SingI String where- sing = SString- instance SingI n => SingI (Maybe (n :: *)) where- sing = SMaybe sing- instance (SingI n, SingI n) =>- SingI (Vec (n :: *) (n :: Nat)) where- sing = SVec sing sing
tests/compile-and-dump/Singletons/Star.ghc80.template view
@@ -15,7 +15,7 @@ Equals_0123456789 (Maybe a) (Maybe b) = (:==) a b Equals_0123456789 (Vec a a) (Vec b b) = (:&&) ((:==) a b) ((:==) a b) Equals_0123456789 (a :: Type) (b :: Type) = FalseSym0- instance PEq (KProxy :: KProxy Type) where+ instance PEq (Proxy :: Proxy Type) where type (:==) (a :: Type) (b :: Type) = Equals_0123456789 a b type NatSym0 = Nat type IntSym0 = Int@@ -89,11 +89,9 @@ = forall arg. KindOf (Apply Compare_0123456789Sym0 arg) ~ KindOf (Compare_0123456789Sym1 arg) => Compare_0123456789Sym0KindInference type instance Apply Compare_0123456789Sym0 l = Compare_0123456789Sym1 l- instance POrd (KProxy :: KProxy Type) where+ instance POrd (Proxy :: Proxy Type) where type Compare (a :: Type) (a :: Type) = Apply (Apply Compare_0123456789Sym0 a) a- instance (SOrd (KProxy :: KProxy Type),- SOrd (KProxy :: KProxy Nat)) =>- SOrd (KProxy :: KProxy Type) where+ instance (SOrd Type, SOrd Nat) => SOrd Type where sCompare :: forall (t0 :: Type) (t1 :: Type). Sing t0@@ -111,9 +109,8 @@ = applySing (applySing (applySing- (singFun3 (Data.Proxy.Proxy :: Data.Proxy.Proxy FoldlSym0) sFoldl)- (singFun2- (Data.Proxy.Proxy :: Data.Proxy.Proxy ThenCmpSym0) sThenCmp))+ (singFun3 (Proxy :: Proxy FoldlSym0) sFoldl)+ (singFun2 (Proxy :: Proxy ThenCmpSym0) sThenCmp)) SEQ) SNil in lambda@@ -126,9 +123,8 @@ = applySing (applySing (applySing- (singFun3 (Data.Proxy.Proxy :: Data.Proxy.Proxy FoldlSym0) sFoldl)- (singFun2- (Data.Proxy.Proxy :: Data.Proxy.Proxy ThenCmpSym0) sThenCmp))+ (singFun3 (Proxy :: Proxy FoldlSym0) sFoldl)+ (singFun2 (Proxy :: Proxy ThenCmpSym0) sThenCmp)) SEQ) SNil in lambda@@ -141,9 +137,8 @@ = applySing (applySing (applySing- (singFun3 (Data.Proxy.Proxy :: Data.Proxy.Proxy FoldlSym0) sFoldl)- (singFun2- (Data.Proxy.Proxy :: Data.Proxy.Proxy ThenCmpSym0) sThenCmp))+ (singFun3 (Proxy :: Proxy FoldlSym0) sFoldl)+ (singFun2 (Proxy :: Proxy ThenCmpSym0) sThenCmp)) SEQ) SNil in lambda@@ -160,18 +155,15 @@ = applySing (applySing (applySing- (singFun3 (Data.Proxy.Proxy :: Data.Proxy.Proxy FoldlSym0) sFoldl)- (singFun2- (Data.Proxy.Proxy :: Data.Proxy.Proxy ThenCmpSym0) sThenCmp))+ (singFun3 (Proxy :: Proxy FoldlSym0) sFoldl)+ (singFun2 (Proxy :: Proxy ThenCmpSym0) sThenCmp)) SEQ) (applySing (applySing- (singFun2 (Data.Proxy.Proxy :: Data.Proxy.Proxy (:$)) SCons)+ (singFun2 (Proxy :: Proxy (:$)) SCons) (applySing (applySing- (singFun2- (Data.Proxy.Proxy :: Data.Proxy.Proxy CompareSym0) sCompare)- a_0123456789)+ (singFun2 (Proxy :: Proxy CompareSym0) sCompare) a_0123456789) b_0123456789)) SNil) in lambda sA_0123456789 sB_0123456789@@ -192,27 +184,22 @@ = applySing (applySing (applySing- (singFun3 (Data.Proxy.Proxy :: Data.Proxy.Proxy FoldlSym0) sFoldl)- (singFun2- (Data.Proxy.Proxy :: Data.Proxy.Proxy ThenCmpSym0) sThenCmp))+ (singFun3 (Proxy :: Proxy FoldlSym0) sFoldl)+ (singFun2 (Proxy :: Proxy ThenCmpSym0) sThenCmp)) SEQ) (applySing (applySing- (singFun2 (Data.Proxy.Proxy :: Data.Proxy.Proxy (:$)) SCons)+ (singFun2 (Proxy :: Proxy (:$)) SCons) (applySing (applySing- (singFun2- (Data.Proxy.Proxy :: Data.Proxy.Proxy CompareSym0) sCompare)- a_0123456789)+ (singFun2 (Proxy :: Proxy CompareSym0) sCompare) a_0123456789) b_0123456789)) (applySing (applySing- (singFun2 (Data.Proxy.Proxy :: Data.Proxy.Proxy (:$)) SCons)+ (singFun2 (Proxy :: Proxy (:$)) SCons) (applySing (applySing- (singFun2- (Data.Proxy.Proxy :: Data.Proxy.Proxy CompareSym0) sCompare)- a_0123456789)+ (singFun2 (Proxy :: Proxy CompareSym0) sCompare) a_0123456789) b_0123456789)) SNil)) in lambda sA_0123456789 sA_0123456789 sB_0123456789 sB_0123456789@@ -414,8 +401,8 @@ forall (n :: Type) (n :: Nat). z ~ Vec n n => SVec (Sing (n :: Type)) (Sing (n :: Nat)) type SRep = (Sing :: Type -> Type)- instance SingKind (KProxy :: KProxy Type) where- type DemoteRep (KProxy :: KProxy Type) = Rep+ instance SingKind Type where+ type DemoteRep Type = Rep fromSing SNat = Singletons.Star.Nat fromSing SInt = Singletons.Star.Int fromSing SString = Singletons.Star.String@@ -425,16 +412,15 @@ toSing Singletons.Star.Int = SomeSing SInt toSing Singletons.Star.String = SomeSing SString toSing (Singletons.Star.Maybe b)- = case toSing b :: SomeSing (KProxy :: KProxy Type) of {+ = case toSing b :: SomeSing Type of { SomeSing c -> SomeSing (SMaybe c) } toSing (Singletons.Star.Vec b b) = case GHC.Tuple.(,)- (toSing b :: SomeSing (KProxy :: KProxy Type))- (toSing b :: SomeSing (KProxy :: KProxy Nat))+ (toSing b :: SomeSing Type) (toSing b :: SomeSing Nat) of { GHC.Tuple.(,) (SomeSing c) (SomeSing c) -> SomeSing (SVec c c) }- instance SEq (KProxy :: KProxy Type) where+ instance SEq Type where (%:==) SNat SNat = STrue (%:==) SNat SInt = SFalse (%:==) SNat SString = SFalse@@ -460,7 +446,7 @@ (%:==) (SVec _ _) SString = SFalse (%:==) (SVec _ _) (SMaybe _) = SFalse (%:==) (SVec a a) (SVec b b) = (%:&&) ((%:==) a b) ((%:==) a b)- instance SDecide (KProxy :: KProxy Type) where+ instance SDecide Type where (%~) SNat SNat = Proved Refl (%~) SNat SInt = Disproved
tests/compile-and-dump/Singletons/Star.hs view
@@ -6,10 +6,7 @@ import Data.Singletons.Decide import Data.Singletons.CustomStar import Singletons.Nat--#if __GLASGOW_HASKELL__ >= 711 import Data.Kind-#endif data Vec :: * -> Nat -> * where VNil :: Vec a Zero
− tests/compile-and-dump/Singletons/T124.ghc710.template
@@ -1,37 +0,0 @@-Singletons/T124.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| foo :: Bool -> ()- foo True = ()- foo False = () |]- ======>- foo :: Bool -> ()- foo True = GHC.Tuple.()- foo False = GHC.Tuple.()- type FooSym1 (t :: Bool) = Foo t- instance SuppressUnusedWarnings FooSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) FooSym0KindInference GHC.Tuple.())- data FooSym0 (l :: TyFun Bool ())- = forall arg. KindOf (Apply FooSym0 arg) ~ KindOf (FooSym1 arg) =>- FooSym0KindInference- type instance Apply FooSym0 l = FooSym1 l- type family Foo (a :: Bool) :: () where- Foo True = Tuple0Sym0- Foo False = Tuple0Sym0- sFoo :: forall (t :: Bool). Sing t -> Sing (Apply FooSym0 t :: ())- sFoo STrue- = let- lambda :: t ~ TrueSym0 => Sing (Apply FooSym0 t :: ())- lambda = STuple0- in lambda- sFoo SFalse- = let- lambda :: t ~ FalseSym0 => Sing (Apply FooSym0 t :: ())- lambda = STuple0- in lambda-Singletons/T124.hs:0:0:: Splicing expression- sCases ''Bool [| b |] [| STuple0 |]- ======>- case b of {- SFalse -> STuple0- STrue -> STuple0 }
− tests/compile-and-dump/Singletons/T136.ghc710.template
@@ -1,262 +0,0 @@-Singletons/T136.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| instance Enum BiNat where- succ [] = [True]- succ (False : as) = True : as- succ (True : as) = False : succ as- pred [] = error "pred 0"- pred (False : as) = True : pred as- pred (True : as) = False : as- toEnum i- | i < 0 = error "negative toEnum"- | i == 0 = []- | otherwise = succ (toEnum (pred i))- fromEnum [] = 0- fromEnum (False : as) = 2 * fromEnum as- fromEnum (True : as) = 1 + 2 * fromEnum as |]- ======>- instance Enum BiNat where- succ GHC.Types.[] = [True]- succ (False GHC.Types.: as) = (True GHC.Types.: as)- succ (True GHC.Types.: as) = (False GHC.Types.: (succ as))- pred GHC.Types.[] = error "pred 0"- pred (False GHC.Types.: as) = (True GHC.Types.: (pred as))- pred (True GHC.Types.: as) = (False GHC.Types.: as)- toEnum i- | (i < 0) = error "negative toEnum"- | (i == 0) = []- | otherwise = succ (toEnum (pred i))- fromEnum GHC.Types.[] = 0- fromEnum (False GHC.Types.: as) = (2 * (fromEnum as))- fromEnum (True GHC.Types.: as) = (1 + (2 * (fromEnum as)))- type family Succ_0123456789 (a :: [Bool]) :: [Bool] where- Succ_0123456789 '[] = Apply (Apply (:$) TrueSym0) '[]- Succ_0123456789 ((:) False as) = Apply (Apply (:$) TrueSym0) as- Succ_0123456789 ((:) True as) = Apply (Apply (:$) FalseSym0) (Apply SuccSym0 as)- type Succ_0123456789Sym1 (t :: [Bool]) = Succ_0123456789 t- instance SuppressUnusedWarnings Succ_0123456789Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Succ_0123456789Sym0KindInference GHC.Tuple.())- data Succ_0123456789Sym0 (l :: TyFun [Bool] [Bool])- = forall arg. KindOf (Apply Succ_0123456789Sym0 arg) ~ KindOf (Succ_0123456789Sym1 arg) =>- Succ_0123456789Sym0KindInference- type instance Apply Succ_0123456789Sym0 l = Succ_0123456789Sym1 l- type family Pred_0123456789 (a :: [Bool]) :: [Bool] where- Pred_0123456789 '[] = Apply ErrorSym0 "pred 0"- Pred_0123456789 ((:) False as) = Apply (Apply (:$) TrueSym0) (Apply PredSym0 as)- Pred_0123456789 ((:) True as) = Apply (Apply (:$) FalseSym0) as- type Pred_0123456789Sym1 (t :: [Bool]) = Pred_0123456789 t- instance SuppressUnusedWarnings Pred_0123456789Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Pred_0123456789Sym0KindInference GHC.Tuple.())- data Pred_0123456789Sym0 (l :: TyFun [Bool] [Bool])- = forall arg. KindOf (Apply Pred_0123456789Sym0 arg) ~ KindOf (Pred_0123456789Sym1 arg) =>- Pred_0123456789Sym0KindInference- type instance Apply Pred_0123456789Sym0 l = Pred_0123456789Sym1 l- type family Case_0123456789 i arg_0123456789 t where- Case_0123456789 i arg_0123456789 True = '[]- Case_0123456789 i arg_0123456789 False = Apply SuccSym0 (Apply ToEnumSym0 (Apply PredSym0 i))- type family Case_0123456789 i arg_0123456789 t where- Case_0123456789 i arg_0123456789 True = Apply ErrorSym0 "negative toEnum"- Case_0123456789 i arg_0123456789 False = Case_0123456789 i arg_0123456789 (Apply (Apply (:==$) i) (FromInteger 0))- type family Case_0123456789 arg_0123456789 t where- Case_0123456789 arg_0123456789 i = Case_0123456789 i arg_0123456789 (Apply (Apply (:<$) i) (FromInteger 0))- type family ToEnum_0123456789 (a :: GHC.TypeLits.Nat) :: [Bool] where- ToEnum_0123456789 arg_0123456789 = Case_0123456789 arg_0123456789 arg_0123456789- type ToEnum_0123456789Sym1 (t :: GHC.TypeLits.Nat) =- ToEnum_0123456789 t- instance SuppressUnusedWarnings ToEnum_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) ToEnum_0123456789Sym0KindInference GHC.Tuple.())- data ToEnum_0123456789Sym0 (l :: TyFun GHC.TypeLits.Nat [Bool])- = forall arg. KindOf (Apply ToEnum_0123456789Sym0 arg) ~ KindOf (ToEnum_0123456789Sym1 arg) =>- ToEnum_0123456789Sym0KindInference- type instance Apply ToEnum_0123456789Sym0 l = ToEnum_0123456789Sym1 l- type family FromEnum_0123456789 (a :: [Bool]) :: GHC.TypeLits.Nat where- FromEnum_0123456789 '[] = FromInteger 0- FromEnum_0123456789 ((:) False as) = Apply (Apply (:*$) (FromInteger 2)) (Apply FromEnumSym0 as)- FromEnum_0123456789 ((:) True as) = Apply (Apply (:+$) (FromInteger 1)) (Apply (Apply (:*$) (FromInteger 2)) (Apply FromEnumSym0 as))- type FromEnum_0123456789Sym1 (t :: [Bool]) = FromEnum_0123456789 t- instance SuppressUnusedWarnings FromEnum_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,) FromEnum_0123456789Sym0KindInference GHC.Tuple.())- data FromEnum_0123456789Sym0 (l :: TyFun [Bool] GHC.TypeLits.Nat)- = forall arg. KindOf (Apply FromEnum_0123456789Sym0 arg) ~ KindOf (FromEnum_0123456789Sym1 arg) =>- FromEnum_0123456789Sym0KindInference- type instance Apply FromEnum_0123456789Sym0 l = FromEnum_0123456789Sym1 l- instance PEnum (KProxy :: KProxy [Bool]) where- type Succ (a :: [Bool]) = Apply Succ_0123456789Sym0 a- type Pred (a :: [Bool]) = Apply Pred_0123456789Sym0 a- type ToEnum (a :: GHC.TypeLits.Nat) = Apply ToEnum_0123456789Sym0 a- type FromEnum (a :: [Bool]) = Apply FromEnum_0123456789Sym0 a- instance SEnum (KProxy :: KProxy [Bool]) where- sSucc ::- forall (t0 :: [Bool]).- Sing t0- -> Sing (Apply (SuccSym0 :: TyFun [Bool] [Bool] -> *) t0 :: [Bool])- sPred ::- forall (t0 :: [Bool]).- Sing t0- -> Sing (Apply (PredSym0 :: TyFun [Bool] [Bool] -> *) t0 :: [Bool])- sToEnum ::- forall (t0 :: GHC.TypeLits.Nat).- Sing t0- -> Sing (Apply (ToEnumSym0 :: TyFun GHC.TypeLits.Nat [Bool]- -> *) t0 :: [Bool])- sFromEnum ::- forall (t0 :: [Bool]).- Sing t0- -> Sing (Apply (FromEnumSym0 :: TyFun [Bool] GHC.TypeLits.Nat- -> *) t0 :: GHC.TypeLits.Nat)- sSucc SNil- = let- lambda :: t0 ~ '[] => Sing (Apply SuccSym0 t0 :: [Bool])- lambda- = applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) STrue) SNil- in lambda- sSucc (SCons SFalse sAs)- = let- lambda ::- forall as. t0 ~ Apply (Apply (:$) FalseSym0) as =>- Sing as -> Sing (Apply SuccSym0 t0 :: [Bool])- lambda as- = applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) STrue) as- in lambda sAs- sSucc (SCons STrue sAs)- = let- lambda ::- forall as. t0 ~ Apply (Apply (:$) TrueSym0) as =>- Sing as -> Sing (Apply SuccSym0 t0 :: [Bool])- lambda as- = applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) SFalse)- (applySing (singFun1 (Proxy :: Proxy SuccSym0) sSucc) as)- in lambda sAs- sPred SNil- = let- lambda :: t0 ~ '[] => Sing (Apply PredSym0 t0 :: [Bool])- lambda = sError (sing :: Sing "pred 0")- in lambda- sPred (SCons SFalse sAs)- = let- lambda ::- forall as. t0 ~ Apply (Apply (:$) FalseSym0) as =>- Sing as -> Sing (Apply PredSym0 t0 :: [Bool])- lambda as- = applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) STrue)- (applySing (singFun1 (Proxy :: Proxy PredSym0) sPred) as)- in lambda sAs- sPred (SCons STrue sAs)- = let- lambda ::- forall as. t0 ~ Apply (Apply (:$) TrueSym0) as =>- Sing as -> Sing (Apply PredSym0 t0 :: [Bool])- lambda as- = applySing- (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) SFalse) as- in lambda sAs- sToEnum sArg_0123456789- = let- lambda ::- forall arg_0123456789. t0 ~ arg_0123456789 =>- Sing arg_0123456789 -> Sing (Apply ToEnumSym0 t0 :: [Bool])- lambda arg_0123456789- = case arg_0123456789 of {- sI- -> let- lambda ::- forall i. i ~ arg_0123456789 =>- Sing i -> Sing (Case_0123456789 arg_0123456789 i :: [Bool])- lambda i- = case- applySing- (applySing (singFun2 (Proxy :: Proxy (:<$)) (%:<)) i)- (sFromInteger (sing :: Sing 0))- of {- STrue- -> let- lambda ::- TrueSym0 ~ Apply (Apply (:<$) i) (FromInteger 0) =>- Sing (Case_0123456789 i arg_0123456789 TrueSym0 :: [Bool])- lambda = sError (sing :: Sing "negative toEnum")- in lambda- SFalse- -> let- lambda ::- FalseSym0 ~ Apply (Apply (:<$) i) (FromInteger 0) =>- Sing (Case_0123456789 i arg_0123456789 FalseSym0 :: [Bool])- lambda- = case- applySing- (applySing- (singFun2 (Proxy :: Proxy (:==$)) (%:==)) i)- (sFromInteger (sing :: Sing 0))- of {- STrue- -> let- lambda ::- TrueSym0 ~ Apply (Apply (:==$) i) (FromInteger 0) =>- Sing (Case_0123456789 i arg_0123456789 TrueSym0 :: [Bool])- lambda = SNil- in lambda- SFalse- -> let- lambda ::- FalseSym0 ~ Apply (Apply (:==$) i) (FromInteger 0) =>- Sing (Case_0123456789 i arg_0123456789 FalseSym0 :: [Bool])- lambda- = applySing- (singFun1 (Proxy :: Proxy SuccSym0) sSucc)- (applySing- (singFun1- (Proxy :: Proxy ToEnumSym0) sToEnum)- (applySing- (singFun1- (Proxy :: Proxy PredSym0) sPred)- i))- in lambda } ::- Sing (Case_0123456789 i arg_0123456789 (Apply (Apply (:==$) i) (FromInteger 0)) :: [Bool])- in lambda } ::- Sing (Case_0123456789 i arg_0123456789 (Apply (Apply (:<$) i) (FromInteger 0)) :: [Bool])- in lambda sI } ::- Sing (Case_0123456789 arg_0123456789 arg_0123456789 :: [Bool])- in lambda sArg_0123456789- sFromEnum SNil- = let- lambda ::- t0 ~ '[] => Sing (Apply FromEnumSym0 t0 :: GHC.TypeLits.Nat)- lambda = sFromInteger (sing :: Sing 0)- in lambda- sFromEnum (SCons SFalse sAs)- = let- lambda ::- forall as. t0 ~ Apply (Apply (:$) FalseSym0) as =>- Sing as -> Sing (Apply FromEnumSym0 t0 :: GHC.TypeLits.Nat)- lambda as- = applySing- (applySing- (singFun2 (Proxy :: Proxy (:*$)) (%:*))- (sFromInteger (sing :: Sing 2)))- (applySing (singFun1 (Proxy :: Proxy FromEnumSym0) sFromEnum) as)- in lambda sAs- sFromEnum (SCons STrue sAs)- = let- lambda ::- forall as. t0 ~ Apply (Apply (:$) TrueSym0) as =>- Sing as -> Sing (Apply FromEnumSym0 t0 :: GHC.TypeLits.Nat)- lambda as- = applySing- (applySing- (singFun2 (Proxy :: Proxy (:+$)) (%:+))- (sFromInteger (sing :: Sing 1)))- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:*$)) (%:*))- (sFromInteger (sing :: Sing 2)))- (applySing (singFun1 (Proxy :: Proxy FromEnumSym0) sFromEnum) as))- in lambda sAs
tests/compile-and-dump/Singletons/T136.ghc80.template view
@@ -86,12 +86,12 @@ = forall arg. KindOf (Apply FromEnum_0123456789Sym0 arg) ~ KindOf (FromEnum_0123456789Sym1 arg) => FromEnum_0123456789Sym0KindInference type instance Apply FromEnum_0123456789Sym0 l = FromEnum_0123456789Sym1 l- instance PEnum (KProxy :: KProxy [Bool]) where+ instance PEnum (Proxy :: Proxy [Bool]) where type Succ (a :: [Bool]) = Apply Succ_0123456789Sym0 a type Pred (a :: [Bool]) = Apply Pred_0123456789Sym0 a type ToEnum (a :: GHC.Types.Nat) = Apply ToEnum_0123456789Sym0 a type FromEnum (a :: [Bool]) = Apply FromEnum_0123456789Sym0 a- instance SEnum (KProxy :: KProxy [Bool]) where+ instance SEnum [Bool] where sSucc :: forall (t0 :: [Bool]). Sing t0
− tests/compile-and-dump/Singletons/T136b.ghc710.template
@@ -1,50 +0,0 @@-Singletons/T136b.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| class C a where- meth :: a -> a |]- ======>- class C a where- meth :: a -> a- type MethSym1 (t :: a0123456789) = Meth t- instance SuppressUnusedWarnings MethSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) MethSym0KindInference GHC.Tuple.())- data MethSym0 (l :: TyFun a0123456789 a0123456789)- = forall arg. KindOf (Apply MethSym0 arg) ~ KindOf (MethSym1 arg) =>- MethSym0KindInference- type instance Apply MethSym0 l = MethSym1 l- class kproxy ~ KProxy => PC (kproxy :: KProxy a) where- type family Meth (arg :: a) :: a- class kproxy ~ KProxy => SC (kproxy :: KProxy a) where- sMeth :: forall (t :: a). Sing t -> Sing (Apply MethSym0 t :: a)-Singletons/T136b.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| instance C Bool where- meth = not |]- ======>- instance C Bool where- meth = not- type family Meth_0123456789 (a :: Bool) :: Bool where- Meth_0123456789 a_0123456789 = Apply NotSym0 a_0123456789- type Meth_0123456789Sym1 (t :: Bool) = Meth_0123456789 t- instance SuppressUnusedWarnings Meth_0123456789Sym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) Meth_0123456789Sym0KindInference GHC.Tuple.())- data Meth_0123456789Sym0 (l :: TyFun Bool Bool)- = forall arg. KindOf (Apply Meth_0123456789Sym0 arg) ~ KindOf (Meth_0123456789Sym1 arg) =>- Meth_0123456789Sym0KindInference- type instance Apply Meth_0123456789Sym0 l = Meth_0123456789Sym1 l- instance PC (KProxy :: KProxy Bool) where- type Meth (a :: Bool) = Apply Meth_0123456789Sym0 a- instance SC (KProxy :: KProxy Bool) where- sMeth ::- forall (t :: Bool).- Sing t -> Sing (Apply (MethSym0 :: TyFun Bool Bool -> *) t :: Bool)- sMeth sA_0123456789- = let- lambda ::- forall a_0123456789. t ~ a_0123456789 =>- Sing a_0123456789 -> Sing (Apply MethSym0 t :: Bool)- lambda a_0123456789- = applySing (singFun1 (Proxy :: Proxy NotSym0) sNot) a_0123456789- in lambda sA_0123456789
tests/compile-and-dump/Singletons/T136b.ghc80.template view
@@ -13,9 +13,9 @@ = forall arg. KindOf (Apply MethSym0 arg) ~ KindOf (MethSym1 arg) => MethSym0KindInference type instance Apply MethSym0 l = MethSym1 l- class kproxy ~ KProxy => PC (kproxy :: KProxy a) where+ class kproxy ~ Proxy => PC (kproxy :: Proxy a) where type Meth (arg :: a) :: a- class kproxy ~ KProxy => SC (kproxy :: KProxy a) where+ class SC a where sMeth :: forall (t :: a). Sing t -> Sing (Apply MethSym0 t :: a) Singletons/T136b.hs:(0,0)-(0,0): Splicing declarations singletons@@ -34,9 +34,9 @@ = forall arg. KindOf (Apply Meth_0123456789Sym0 arg) ~ KindOf (Meth_0123456789Sym1 arg) => Meth_0123456789Sym0KindInference type instance Apply Meth_0123456789Sym0 l = Meth_0123456789Sym1 l- instance PC (KProxy :: KProxy Bool) where+ instance PC (Proxy :: Proxy Bool) where type Meth (a :: Bool) = Apply Meth_0123456789Sym0 a- instance SC (KProxy :: KProxy Bool) where+ instance SC Bool where sMeth :: forall (t :: Bool). Sing t
− tests/compile-and-dump/Singletons/T29.ghc710.template
@@ -1,127 +0,0 @@-Singletons/T29.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| foo :: Bool -> Bool- foo x = not $ x- bar :: Bool -> Bool- bar x = not . not . not $ x- baz :: Bool -> Bool- baz x = not $! x- ban :: Bool -> Bool- ban x = not . not . not $! x |]- ======>- foo :: Bool -> Bool- foo x = (not $ x)- bar :: Bool -> Bool- bar x = ((not . (not . not)) $ x)- baz :: Bool -> Bool- baz x = (not $! x)- ban :: Bool -> Bool- ban x = ((not . (not . not)) $! x)- type BanSym1 (t :: Bool) = Ban t- instance SuppressUnusedWarnings BanSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) BanSym0KindInference GHC.Tuple.())- data BanSym0 (l :: TyFun Bool Bool)- = forall arg. KindOf (Apply BanSym0 arg) ~ KindOf (BanSym1 arg) =>- BanSym0KindInference- type instance Apply BanSym0 l = BanSym1 l- type BazSym1 (t :: Bool) = Baz t- instance SuppressUnusedWarnings BazSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) BazSym0KindInference GHC.Tuple.())- data BazSym0 (l :: TyFun Bool Bool)- = forall arg. KindOf (Apply BazSym0 arg) ~ KindOf (BazSym1 arg) =>- BazSym0KindInference- type instance Apply BazSym0 l = BazSym1 l- type BarSym1 (t :: Bool) = Bar t- instance SuppressUnusedWarnings BarSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) BarSym0KindInference GHC.Tuple.())- data BarSym0 (l :: TyFun Bool Bool)- = forall arg. KindOf (Apply BarSym0 arg) ~ KindOf (BarSym1 arg) =>- BarSym0KindInference- type instance Apply BarSym0 l = BarSym1 l- type FooSym1 (t :: Bool) = Foo t- instance SuppressUnusedWarnings FooSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) FooSym0KindInference GHC.Tuple.())- data FooSym0 (l :: TyFun Bool Bool)- = forall arg. KindOf (Apply FooSym0 arg) ~ KindOf (FooSym1 arg) =>- FooSym0KindInference- type instance Apply FooSym0 l = FooSym1 l- type family Ban (a :: Bool) :: Bool where- Ban x = Apply (Apply ($!$) (Apply (Apply (:.$) NotSym0) (Apply (Apply (:.$) NotSym0) NotSym0))) x- type family Baz (a :: Bool) :: Bool where- Baz x = Apply (Apply ($!$) NotSym0) x- type family Bar (a :: Bool) :: Bool where- Bar x = Apply (Apply ($$) (Apply (Apply (:.$) NotSym0) (Apply (Apply (:.$) NotSym0) NotSym0))) x- type family Foo (a :: Bool) :: Bool where- Foo x = Apply (Apply ($$) NotSym0) x- sBan ::- forall (t :: Bool). Sing t -> Sing (Apply BanSym0 t :: Bool)- sBaz ::- forall (t :: Bool). Sing t -> Sing (Apply BazSym0 t :: Bool)- sBar ::- forall (t :: Bool). Sing t -> Sing (Apply BarSym0 t :: Bool)- sFoo ::- forall (t :: Bool). Sing t -> Sing (Apply FooSym0 t :: Bool)- sBan sX- = let- lambda ::- forall x. t ~ x => Sing x -> Sing (Apply BanSym0 t :: Bool)- lambda x- = applySing- (applySing- (singFun2 (Proxy :: Proxy ($!$)) (%$!))- (applySing- (applySing- (singFun3 (Proxy :: Proxy (:.$)) (%:.))- (singFun1 (Proxy :: Proxy NotSym0) sNot))- (applySing- (applySing- (singFun3 (Proxy :: Proxy (:.$)) (%:.))- (singFun1 (Proxy :: Proxy NotSym0) sNot))- (singFun1 (Proxy :: Proxy NotSym0) sNot))))- x- in lambda sX- sBaz sX- = let- lambda ::- forall x. t ~ x => Sing x -> Sing (Apply BazSym0 t :: Bool)- lambda x- = applySing- (applySing- (singFun2 (Proxy :: Proxy ($!$)) (%$!))- (singFun1 (Proxy :: Proxy NotSym0) sNot))- x- in lambda sX- sBar sX- = let- lambda ::- forall x. t ~ x => Sing x -> Sing (Apply BarSym0 t :: Bool)- lambda x- = applySing- (applySing- (singFun2 (Proxy :: Proxy ($$)) (%$))- (applySing- (applySing- (singFun3 (Proxy :: Proxy (:.$)) (%:.))- (singFun1 (Proxy :: Proxy NotSym0) sNot))- (applySing- (applySing- (singFun3 (Proxy :: Proxy (:.$)) (%:.))- (singFun1 (Proxy :: Proxy NotSym0) sNot))- (singFun1 (Proxy :: Proxy NotSym0) sNot))))- x- in lambda sX- sFoo sX- = let- lambda ::- forall x. t ~ x => Sing x -> Sing (Apply FooSym0 t :: Bool)- lambda x- = applySing- (applySing- (singFun2 (Proxy :: Proxy ($$)) (%$))- (singFun1 (Proxy :: Proxy NotSym0) sNot))- x- in lambda sX
− tests/compile-and-dump/Singletons/T33.ghc710.template
@@ -1,34 +0,0 @@-Singletons/T33.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| foo :: (Bool, Bool) -> ()- foo ~(_, _) = () |]- ======>- foo :: (Bool, Bool) -> ()- foo ~(_, _) = GHC.Tuple.()- type FooSym1 (t :: (Bool, Bool)) = Foo t- instance SuppressUnusedWarnings FooSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) FooSym0KindInference GHC.Tuple.())- data FooSym0 (l :: TyFun (Bool, Bool) ())- = forall arg. KindOf (Apply FooSym0 arg) ~ KindOf (FooSym1 arg) =>- FooSym0KindInference- type instance Apply FooSym0 l = FooSym1 l- type family Foo (a :: (Bool, Bool)) :: () where- Foo '(_z_0123456789, _z_0123456789) = Tuple0Sym0- sFoo ::- forall (t :: (Bool, Bool)). Sing t -> Sing (Apply FooSym0 t :: ())- sFoo (STuple2 _s_z_0123456789 _s_z_0123456789)- = let- lambda ::- forall _z_0123456789- _z_0123456789. t ~ Apply (Apply Tuple2Sym0 _z_0123456789) _z_0123456789 =>- Sing _z_0123456789- -> Sing _z_0123456789 -> Sing (Apply FooSym0 t :: ())- lambda _z_0123456789 _z_0123456789 = STuple0- in lambda _s_z_0123456789 _s_z_0123456789--Singletons/T33.hs:0:0: Warning:- Lazy pattern converted into regular pattern in promotion--Singletons/T33.hs:0:0: Warning:- Lazy pattern converted into regular pattern during singleton generation.
− tests/compile-and-dump/Singletons/T54.ghc710.template
@@ -1,59 +0,0 @@-Singletons/T54.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| g :: Bool -> Bool- g e = (case [not] of { [_] -> not }) e |]- ======>- g :: Bool -> Bool- g e = case [not] of { [_] -> not } e- type Let0123456789Scrutinee_0123456789Sym1 t =- Let0123456789Scrutinee_0123456789 t- instance SuppressUnusedWarnings Let0123456789Scrutinee_0123456789Sym0 where- suppressUnusedWarnings _- = snd- (GHC.Tuple.(,)- Let0123456789Scrutinee_0123456789Sym0KindInference GHC.Tuple.())- data Let0123456789Scrutinee_0123456789Sym0 l- = forall arg. KindOf (Apply Let0123456789Scrutinee_0123456789Sym0 arg) ~ KindOf (Let0123456789Scrutinee_0123456789Sym1 arg) =>- Let0123456789Scrutinee_0123456789Sym0KindInference- type instance Apply Let0123456789Scrutinee_0123456789Sym0 l = Let0123456789Scrutinee_0123456789Sym1 l- type family Let0123456789Scrutinee_0123456789 e where- Let0123456789Scrutinee_0123456789 e = Apply (Apply (:$) NotSym0) '[]- type family Case_0123456789 e t where- Case_0123456789 e '[_z_0123456789] = NotSym0- type GSym1 (t :: Bool) = G t- instance SuppressUnusedWarnings GSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) GSym0KindInference GHC.Tuple.())- data GSym0 (l :: TyFun Bool Bool)- = forall arg. KindOf (Apply GSym0 arg) ~ KindOf (GSym1 arg) =>- GSym0KindInference- type instance Apply GSym0 l = GSym1 l- type family G (a :: Bool) :: Bool where- G e = Apply (Case_0123456789 e (Let0123456789Scrutinee_0123456789Sym1 e)) e- sG :: forall (t :: Bool). Sing t -> Sing (Apply GSym0 t :: Bool)- sG sE- = let- lambda :: forall e. t ~ e => Sing e -> Sing (Apply GSym0 t :: Bool)- lambda e- = applySing- (let- sScrutinee_0123456789 ::- Sing (Let0123456789Scrutinee_0123456789Sym1 e)- sScrutinee_0123456789- = applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (singFun1 (Proxy :: Proxy NotSym0) sNot))- SNil- in case sScrutinee_0123456789 of {- SCons _s_z_0123456789 SNil- -> let- lambda ::- forall _z_0123456789. Apply (Apply (:$) _z_0123456789) '[] ~ Let0123456789Scrutinee_0123456789Sym1 e =>- Sing _z_0123456789- -> Sing (Case_0123456789 e (Apply (Apply (:$) _z_0123456789) '[]))- lambda _z_0123456789 = singFun1 (Proxy :: Proxy NotSym0) sNot- in lambda _s_z_0123456789 } ::- Sing (Case_0123456789 e (Let0123456789Scrutinee_0123456789Sym1 e)))- e- in lambda sE
− tests/compile-and-dump/Singletons/T78.ghc710.template
@@ -1,42 +0,0 @@-Singletons/T78.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| foo :: MaybeBool -> Bool- foo (Just False) = False- foo (Just True) = True- foo Nothing = False |]- ======>- foo :: MaybeBool -> Bool- foo (Just False) = False- foo (Just True) = True- foo Nothing = False- type FooSym1 (t :: Maybe Bool) = Foo t- instance SuppressUnusedWarnings FooSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) FooSym0KindInference GHC.Tuple.())- data FooSym0 (l :: TyFun (Maybe Bool) Bool)- = forall arg. KindOf (Apply FooSym0 arg) ~ KindOf (FooSym1 arg) =>- FooSym0KindInference- type instance Apply FooSym0 l = FooSym1 l- type family Foo (a :: Maybe Bool) :: Bool where- Foo (Just False) = FalseSym0- Foo (Just True) = TrueSym0- Foo Nothing = FalseSym0- sFoo ::- forall (t :: Maybe Bool). Sing t -> Sing (Apply FooSym0 t :: Bool)- sFoo (SJust SFalse)- = let- lambda ::- t ~ Apply JustSym0 FalseSym0 => Sing (Apply FooSym0 t :: Bool)- lambda = SFalse- in lambda- sFoo (SJust STrue)- = let- lambda ::- t ~ Apply JustSym0 TrueSym0 => Sing (Apply FooSym0 t :: Bool)- lambda = STrue- in lambda- sFoo SNothing- = let- lambda :: t ~ NothingSym0 => Sing (Apply FooSym0 t :: Bool)- lambda = SFalse- in lambda
− tests/compile-and-dump/Singletons/TopLevelPatterns.ghc710.template
@@ -1,404 +0,0 @@-Singletons/TopLevelPatterns.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| data Bool = False | True- data Foo = Bar Bool Bool |]- ======>- data Bool = False | True- data Foo = Bar Bool Bool- type FalseSym0 = False- type TrueSym0 = True- type BarSym2 (t :: Bool) (t :: Bool) = Bar t t- instance SuppressUnusedWarnings BarSym1 where- suppressUnusedWarnings _- = Data.Tuple.snd (GHC.Tuple.(,) BarSym1KindInference GHC.Tuple.())- data BarSym1 (l :: Bool) (l :: TyFun Bool Foo)- = forall arg. KindOf (Apply (BarSym1 l) arg) ~ KindOf (BarSym2 l arg) =>- BarSym1KindInference- type instance Apply (BarSym1 l) l = BarSym2 l l- instance SuppressUnusedWarnings BarSym0 where- suppressUnusedWarnings _- = Data.Tuple.snd (GHC.Tuple.(,) BarSym0KindInference GHC.Tuple.())- data BarSym0 (l :: TyFun Bool (TyFun Bool Foo -> *))- = forall arg. KindOf (Apply BarSym0 arg) ~ KindOf (BarSym1 arg) =>- BarSym0KindInference- type instance Apply BarSym0 l = BarSym1 l- data instance Sing (z :: Bool)- = z ~ False => SFalse | z ~ True => STrue- type SBool = (Sing :: Bool -> *)- instance SingKind (KProxy :: KProxy Bool) where- type DemoteRep (KProxy :: KProxy Bool) = Bool- fromSing SFalse = False- fromSing STrue = True- toSing False = SomeSing SFalse- toSing True = SomeSing STrue- data instance Sing (z :: Foo)- = forall (n :: Bool) (n :: Bool). z ~ Bar n n =>- SBar (Sing (n :: Bool)) (Sing (n :: Bool))- type SFoo = (Sing :: Foo -> *)- instance SingKind (KProxy :: KProxy Foo) where- type DemoteRep (KProxy :: KProxy Foo) = Foo- fromSing (SBar b b) = Bar (fromSing b) (fromSing b)- toSing (Bar b b)- = case- GHC.Tuple.(,)- (toSing b :: SomeSing (KProxy :: KProxy Bool))- (toSing b :: SomeSing (KProxy :: KProxy Bool))- of {- GHC.Tuple.(,) (SomeSing c) (SomeSing c) -> SomeSing (SBar c c) }- instance SingI False where- sing = SFalse- instance SingI True where- sing = STrue- instance (SingI n, SingI n) =>- SingI (Bar (n :: Bool) (n :: Bool)) where- sing = SBar sing sing-Singletons/TopLevelPatterns.hs:(0,0)-(0,0): Splicing declarations- singletons- [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] |]- ======>- 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 family Case_0123456789 a_0123456789 t where- Case_0123456789 a_0123456789 '[y_0123456789,- _z_0123456789] = y_0123456789- type family Case_0123456789 a_0123456789 t where- Case_0123456789 a_0123456789 '[_z_0123456789,- y_0123456789] = y_0123456789- type family Case_0123456789 a_0123456789 t where- Case_0123456789 a_0123456789 '(y_0123456789,- _z_0123456789) = y_0123456789- type family Case_0123456789 a_0123456789 t where- Case_0123456789 a_0123456789 '(_z_0123456789,- y_0123456789) = y_0123456789- type family Case_0123456789 t where- Case_0123456789 (Bar y_0123456789 _z_0123456789) = y_0123456789- type family Case_0123456789 t where- Case_0123456789 (Bar _z_0123456789 y_0123456789) = y_0123456789- type family Case_0123456789 t where- Case_0123456789 '[y_0123456789, _z_0123456789] = y_0123456789- type family Case_0123456789 t where- Case_0123456789 '[_z_0123456789, y_0123456789] = y_0123456789- type False_Sym0 = False_- type NotSym1 (t :: Bool) = Not t- instance SuppressUnusedWarnings NotSym0 where- suppressUnusedWarnings _- = Data.Tuple.snd (GHC.Tuple.(,) NotSym0KindInference GHC.Tuple.())- data NotSym0 (l :: TyFun Bool Bool)- = forall arg. KindOf (Apply NotSym0 arg) ~ KindOf (NotSym1 arg) =>- NotSym0KindInference- type instance Apply NotSym0 l = NotSym1 l- type IdSym1 (t :: a0123456789) = Id t- instance SuppressUnusedWarnings IdSym0 where- suppressUnusedWarnings _- = Data.Tuple.snd (GHC.Tuple.(,) IdSym0KindInference GHC.Tuple.())- data IdSym0 (l :: TyFun a0123456789 a0123456789)- = forall arg. KindOf (Apply IdSym0 arg) ~ KindOf (IdSym1 arg) =>- IdSym0KindInference- type instance Apply IdSym0 l = IdSym1 l- type FSym1 (t :: Bool) = F t- instance SuppressUnusedWarnings FSym0 where- suppressUnusedWarnings _- = Data.Tuple.snd (GHC.Tuple.(,) FSym0KindInference GHC.Tuple.())- data FSym0 (l :: TyFun Bool Bool)- = forall arg. KindOf (Apply FSym0 arg) ~ KindOf (FSym1 arg) =>- FSym0KindInference- type instance Apply FSym0 l = FSym1 l- type GSym1 (t :: Bool) = G t- instance SuppressUnusedWarnings GSym0 where- suppressUnusedWarnings _- = Data.Tuple.snd (GHC.Tuple.(,) GSym0KindInference GHC.Tuple.())- data GSym0 (l :: TyFun Bool Bool)- = forall arg. KindOf (Apply GSym0 arg) ~ KindOf (GSym1 arg) =>- GSym0KindInference- type instance Apply GSym0 l = GSym1 l- type HSym1 (t :: Bool) = H t- instance SuppressUnusedWarnings HSym0 where- suppressUnusedWarnings _- = Data.Tuple.snd (GHC.Tuple.(,) HSym0KindInference GHC.Tuple.())- data HSym0 (l :: TyFun Bool Bool)- = forall arg. KindOf (Apply HSym0 arg) ~ KindOf (HSym1 arg) =>- HSym0KindInference- type instance Apply HSym0 l = HSym1 l- type ISym1 (t :: Bool) = I t- instance SuppressUnusedWarnings ISym0 where- suppressUnusedWarnings _- = Data.Tuple.snd (GHC.Tuple.(,) ISym0KindInference GHC.Tuple.())- data ISym0 (l :: TyFun Bool Bool)- = forall arg. KindOf (Apply ISym0 arg) ~ KindOf (ISym1 arg) =>- ISym0KindInference- type instance Apply ISym0 l = ISym1 l- type JSym0 = J- type KSym0 = K- type LSym0 = L- type MSym0 = M- type OtherwiseSym0 = Otherwise- type X_0123456789Sym0 = X_0123456789- type X_0123456789Sym0 = X_0123456789- type X_0123456789Sym0 = X_0123456789- type X_0123456789Sym0 = X_0123456789- type family False_ where- False_ = FalseSym0- type family Not (a :: Bool) :: Bool where- Not True = FalseSym0- Not False = TrueSym0- type family Id (a :: a) :: a where- Id x = x- type family F (a :: Bool) :: Bool where- F a_0123456789 = Apply (Case_0123456789 a_0123456789 X_0123456789Sym0) a_0123456789- type family G (a :: Bool) :: Bool where- G a_0123456789 = Apply (Case_0123456789 a_0123456789 X_0123456789Sym0) a_0123456789- type family H (a :: Bool) :: Bool where- H a_0123456789 = Apply (Case_0123456789 a_0123456789 X_0123456789Sym0) a_0123456789- type family I (a :: Bool) :: Bool where- I a_0123456789 = Apply (Case_0123456789 a_0123456789 X_0123456789Sym0) a_0123456789- type family J :: Bool where- J = Case_0123456789 X_0123456789Sym0- type family K :: Bool where- K = Case_0123456789 X_0123456789Sym0- type family L :: Bool where- L = Case_0123456789 X_0123456789Sym0- type family M :: Bool where- M = Case_0123456789 X_0123456789Sym0- type family Otherwise :: Bool where- Otherwise = TrueSym0- type family X_0123456789 where- X_0123456789 = Apply (Apply (:$) NotSym0) (Apply (Apply (:$) IdSym0) '[])- type family X_0123456789 where- X_0123456789 = Apply (Apply Tuple2Sym0 FSym0) GSym0- type family X_0123456789 where- X_0123456789 = Apply (Apply BarSym0 TrueSym0) (Apply HSym0 FalseSym0)- type family X_0123456789 where- X_0123456789 = Apply (Apply (:$) (Apply NotSym0 TrueSym0)) (Apply (Apply (:$) (Apply IdSym0 FalseSym0)) '[])- sFalse_ :: Sing False_Sym0- sNot ::- forall (t :: Bool). Sing t -> Sing (Apply NotSym0 t :: Bool)- sId :: forall (t :: a). Sing t -> Sing (Apply IdSym0 t :: a)- sF :: forall (t :: Bool). Sing t -> Sing (Apply FSym0 t :: Bool)- sG :: forall (t :: Bool). Sing t -> Sing (Apply GSym0 t :: Bool)- sH :: forall (t :: Bool). Sing t -> Sing (Apply HSym0 t :: Bool)- sI :: forall (t :: Bool). Sing t -> Sing (Apply ISym0 t :: Bool)- sJ :: Sing (JSym0 :: Bool)- sK :: Sing (KSym0 :: Bool)- sL :: Sing (LSym0 :: Bool)- sM :: Sing (MSym0 :: Bool)- sOtherwise :: Sing (OtherwiseSym0 :: Bool)- sX_0123456789 :: Sing X_0123456789Sym0- sX_0123456789 :: Sing X_0123456789Sym0- sX_0123456789 :: Sing X_0123456789Sym0- sX_0123456789 :: Sing X_0123456789Sym0- sFalse_ = SFalse- sNot STrue- = let- lambda :: t ~ TrueSym0 => Sing (Apply NotSym0 t :: Bool)- lambda = SFalse- in lambda- sNot SFalse- = let- lambda :: t ~ FalseSym0 => Sing (Apply NotSym0 t :: Bool)- lambda = STrue- in lambda- sId sX- = let- lambda :: forall x. t ~ x => Sing x -> Sing (Apply IdSym0 t :: a)- lambda x = x- in lambda sX- sF sA_0123456789- = let- lambda ::- forall a_0123456789. t ~ a_0123456789 =>- Sing a_0123456789 -> Sing (Apply FSym0 t :: Bool)- lambda a_0123456789- = applySing- (case sX_0123456789 of {- SCons sY_0123456789 (SCons _s_z_0123456789 SNil)- -> let- lambda ::- forall y_0123456789- _z_0123456789. Apply (Apply (:$) y_0123456789) (Apply (Apply (:$) _z_0123456789) '[]) ~ X_0123456789Sym0 =>- Sing y_0123456789- -> Sing _z_0123456789- -> Sing (Case_0123456789 a_0123456789 (Apply (Apply (:$) y_0123456789) (Apply (Apply (:$) _z_0123456789) '[])))- lambda y_0123456789 _z_0123456789 = y_0123456789- in lambda sY_0123456789 _s_z_0123456789 } ::- Sing (Case_0123456789 a_0123456789 X_0123456789Sym0))- a_0123456789- in lambda sA_0123456789- sG sA_0123456789- = let- lambda ::- forall a_0123456789. t ~ a_0123456789 =>- Sing a_0123456789 -> Sing (Apply GSym0 t :: Bool)- lambda a_0123456789- = applySing- (case sX_0123456789 of {- SCons _s_z_0123456789 (SCons sY_0123456789 SNil)- -> let- lambda ::- forall _z_0123456789- y_0123456789. Apply (Apply (:$) _z_0123456789) (Apply (Apply (:$) y_0123456789) '[]) ~ X_0123456789Sym0 =>- Sing _z_0123456789- -> Sing y_0123456789- -> Sing (Case_0123456789 a_0123456789 (Apply (Apply (:$) _z_0123456789) (Apply (Apply (:$) y_0123456789) '[])))- lambda _z_0123456789 y_0123456789 = y_0123456789- in lambda _s_z_0123456789 sY_0123456789 } ::- Sing (Case_0123456789 a_0123456789 X_0123456789Sym0))- a_0123456789- in lambda sA_0123456789- sH sA_0123456789- = let- lambda ::- forall a_0123456789. t ~ a_0123456789 =>- Sing a_0123456789 -> Sing (Apply HSym0 t :: Bool)- lambda a_0123456789- = applySing- (case sX_0123456789 of {- STuple2 sY_0123456789 _s_z_0123456789- -> let- lambda ::- forall y_0123456789- _z_0123456789. Apply (Apply Tuple2Sym0 y_0123456789) _z_0123456789 ~ X_0123456789Sym0 =>- Sing y_0123456789- -> Sing _z_0123456789- -> Sing (Case_0123456789 a_0123456789 (Apply (Apply Tuple2Sym0 y_0123456789) _z_0123456789))- lambda y_0123456789 _z_0123456789 = y_0123456789- in lambda sY_0123456789 _s_z_0123456789 } ::- Sing (Case_0123456789 a_0123456789 X_0123456789Sym0))- a_0123456789- in lambda sA_0123456789- sI sA_0123456789- = let- lambda ::- forall a_0123456789. t ~ a_0123456789 =>- Sing a_0123456789 -> Sing (Apply ISym0 t :: Bool)- lambda a_0123456789- = applySing- (case sX_0123456789 of {- STuple2 _s_z_0123456789 sY_0123456789- -> let- lambda ::- forall _z_0123456789- y_0123456789. Apply (Apply Tuple2Sym0 _z_0123456789) y_0123456789 ~ X_0123456789Sym0 =>- Sing _z_0123456789- -> Sing y_0123456789- -> Sing (Case_0123456789 a_0123456789 (Apply (Apply Tuple2Sym0 _z_0123456789) y_0123456789))- lambda _z_0123456789 y_0123456789 = y_0123456789- in lambda _s_z_0123456789 sY_0123456789 } ::- Sing (Case_0123456789 a_0123456789 X_0123456789Sym0))- a_0123456789- in lambda sA_0123456789- sJ- = case sX_0123456789 of {- SBar sY_0123456789 _s_z_0123456789- -> let- lambda ::- forall y_0123456789- _z_0123456789. Apply (Apply BarSym0 y_0123456789) _z_0123456789 ~ X_0123456789Sym0 =>- Sing y_0123456789- -> Sing _z_0123456789- -> Sing (Case_0123456789 (Apply (Apply BarSym0 y_0123456789) _z_0123456789) :: Bool)- lambda y_0123456789 _z_0123456789 = y_0123456789- in lambda sY_0123456789 _s_z_0123456789 } ::- Sing (Case_0123456789 X_0123456789Sym0 :: Bool)- sK- = case sX_0123456789 of {- SBar _s_z_0123456789 sY_0123456789- -> let- lambda ::- forall _z_0123456789- y_0123456789. Apply (Apply BarSym0 _z_0123456789) y_0123456789 ~ X_0123456789Sym0 =>- Sing _z_0123456789- -> Sing y_0123456789- -> Sing (Case_0123456789 (Apply (Apply BarSym0 _z_0123456789) y_0123456789) :: Bool)- lambda _z_0123456789 y_0123456789 = y_0123456789- in lambda _s_z_0123456789 sY_0123456789 } ::- Sing (Case_0123456789 X_0123456789Sym0 :: Bool)- sL- = case sX_0123456789 of {- SCons sY_0123456789 (SCons _s_z_0123456789 SNil)- -> let- lambda ::- forall y_0123456789- _z_0123456789. Apply (Apply (:$) y_0123456789) (Apply (Apply (:$) _z_0123456789) '[]) ~ X_0123456789Sym0 =>- Sing y_0123456789- -> Sing _z_0123456789- -> Sing (Case_0123456789 (Apply (Apply (:$) y_0123456789) (Apply (Apply (:$) _z_0123456789) '[])) :: Bool)- lambda y_0123456789 _z_0123456789 = y_0123456789- in lambda sY_0123456789 _s_z_0123456789 } ::- Sing (Case_0123456789 X_0123456789Sym0 :: Bool)- sM- = case sX_0123456789 of {- SCons _s_z_0123456789 (SCons sY_0123456789 SNil)- -> let- lambda ::- forall _z_0123456789- y_0123456789. Apply (Apply (:$) _z_0123456789) (Apply (Apply (:$) y_0123456789) '[]) ~ X_0123456789Sym0 =>- Sing _z_0123456789- -> Sing y_0123456789- -> Sing (Case_0123456789 (Apply (Apply (:$) _z_0123456789) (Apply (Apply (:$) y_0123456789) '[])) :: Bool)- lambda _z_0123456789 y_0123456789 = y_0123456789- in lambda _s_z_0123456789 sY_0123456789 } ::- Sing (Case_0123456789 X_0123456789Sym0 :: Bool)- sOtherwise = STrue- sX_0123456789- = applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (singFun1 (Proxy :: Proxy NotSym0) sNot))- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (singFun1 (Proxy :: Proxy IdSym0) sId))- SNil)- sX_0123456789- = applySing- (applySing- (singFun2 (Proxy :: Proxy Tuple2Sym0) STuple2)- (singFun1 (Proxy :: Proxy FSym0) sF))- (singFun1 (Proxy :: Proxy GSym0) sG)- sX_0123456789- = applySing- (applySing (singFun2 (Proxy :: Proxy BarSym0) SBar) STrue)- (applySing (singFun1 (Proxy :: Proxy HSym0) sH) SFalse)- sX_0123456789- = applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing (singFun1 (Proxy :: Proxy NotSym0) sNot) STrue))- (applySing- (applySing- (singFun2 (Proxy :: Proxy (:$)) SCons)- (applySing (singFun1 (Proxy :: Proxy IdSym0) sId) SFalse))- SNil)
tests/compile-and-dump/Singletons/TopLevelPatterns.ghc80.template view
@@ -25,8 +25,8 @@ data instance Sing (z :: Bool) = z ~ False => SFalse | z ~ True => STrue type SBool = (Sing :: Bool -> GHC.Types.Type)- instance SingKind (KProxy :: KProxy Bool) where- type DemoteRep (KProxy :: KProxy Bool) = Bool+ instance SingKind Bool where+ type DemoteRep Bool = Bool fromSing SFalse = False fromSing STrue = True toSing False = SomeSing SFalse@@ -35,14 +35,13 @@ = forall (n :: Bool) (n :: Bool). z ~ Bar n n => SBar (Sing (n :: Bool)) (Sing (n :: Bool)) type SFoo = (Sing :: Foo -> GHC.Types.Type)- instance SingKind (KProxy :: KProxy Foo) where- type DemoteRep (KProxy :: KProxy Foo) = Foo+ instance SingKind Foo where+ type DemoteRep Foo = Foo fromSing (SBar b b) = Bar (fromSing b) (fromSing b) toSing (Bar b b) = case GHC.Tuple.(,)- (toSing b :: SomeSing (KProxy :: KProxy Bool))- (toSing b :: SomeSing (KProxy :: KProxy Bool))+ (toSing b :: SomeSing Bool) (toSing b :: SomeSing Bool) of { GHC.Tuple.(,) (SomeSing c) (SomeSing c) -> SomeSing (SBar c c) } instance SingI False where
− tests/compile-and-dump/Singletons/Undef.ghc710.template
@@ -1,49 +0,0 @@-Singletons/Undef.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| foo :: Bool -> Bool- foo = undefined- bar :: Bool -> Bool- bar = error "urk" |]- ======>- foo :: Bool -> Bool- foo = undefined- bar :: Bool -> Bool- bar = error "urk"- type BarSym1 (t :: Bool) = Bar t- instance SuppressUnusedWarnings BarSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) BarSym0KindInference GHC.Tuple.())- data BarSym0 (l :: TyFun Bool Bool)- = forall arg. KindOf (Apply BarSym0 arg) ~ KindOf (BarSym1 arg) =>- BarSym0KindInference- type instance Apply BarSym0 l = BarSym1 l- type FooSym1 (t :: Bool) = Foo t- instance SuppressUnusedWarnings FooSym0 where- suppressUnusedWarnings _- = snd (GHC.Tuple.(,) FooSym0KindInference GHC.Tuple.())- data FooSym0 (l :: TyFun Bool Bool)- = forall arg. KindOf (Apply FooSym0 arg) ~ KindOf (FooSym1 arg) =>- FooSym0KindInference- type instance Apply FooSym0 l = FooSym1 l- type family Bar (a :: Bool) :: Bool where- Bar a_0123456789 = Apply (Apply ErrorSym0 "urk") a_0123456789- type family Foo (a :: Bool) :: Bool where- Foo a_0123456789 = Apply Any a_0123456789- sBar ::- forall (t :: Bool). Sing t -> Sing (Apply BarSym0 t :: Bool)- sFoo ::- forall (t :: Bool). Sing t -> Sing (Apply FooSym0 t :: Bool)- sBar sA_0123456789- = let- lambda ::- forall a_0123456789. t ~ a_0123456789 =>- Sing a_0123456789 -> Sing (Apply BarSym0 t :: Bool)- lambda a_0123456789 = sError (sing :: Sing "urk")- in lambda sA_0123456789- sFoo sA_0123456789- = let- lambda ::- forall a_0123456789. t ~ a_0123456789 =>- Sing a_0123456789 -> Sing (Apply FooSym0 t :: Bool)- lambda a_0123456789 = undefined- in lambda sA_0123456789