singletons-1.1: A framework for generating singleton types

Copyright(C) 2013 Richard Eisenberg
LicenseBSD-style (see LICENSE)
MaintainerRichard Eisenberg (eir@cis.upenn.edu)
Stabilityexperimental
Portabilitynon-portable
Safe HaskellNone
LanguageHaskell2010

Data.Singletons

Contents

Description

This module exports the basic definitions to use singletons. For routine use, consider importing Prelude, which exports constructors for singletons based on types in the Prelude.

You may also want to read http://www.cis.upenn.edu/~eir/packages/singletons/README.html and the original paper presenting this library, available at http://www.cis.upenn.edu/~eir/papers/2012/singletons/paper.pdf.

Synopsis

Main singleton definitions

data family Sing a Source

The singleton kind-indexed data family.

Instances

TestCoercion * (Sing *) 
SDecide k (KProxy k) => TestEquality k (Sing k) 
data Sing Bool where 
data Sing Ordering where 
data Sing * where 
data Sing Nat where 
data Sing Symbol where 
data Sing () where 
data Sing [a0] where 
data Sing (Maybe a0) where 
data Sing (TyFun k1 k2 -> *) = SLambda {} 
data Sing (Either a0 b0) where 
data Sing ((,) a0 b0) where 
data Sing ((,,) a0 b0 c0) where 
data Sing ((,,,) a0 b0 c0 d0) where 
data Sing ((,,,,) a0 b0 c0 d0 e0) where 
data Sing ((,,,,,) a0 b0 c0 d0 e0 f0) where 
data Sing ((,,,,,,) a0 b0 c0 d0 e0 f0 g0) where 

See also Sing for exported constructors

class SingI a where Source

A SingI constraint is essentially an implicitly-passed singleton. If you need to satisfy this constraint with an explicit singleton, please see withSingI.

Methods

sing :: Sing a Source

Produce the singleton explicitly. You will likely need the ScopedTypeVariables extension to use this method the way you want.

Instances

SingI Bool False 
SingI Bool True 
SingI Ordering LT 
SingI Ordering EQ 
SingI Ordering GT 
Typeable * a => SingI * a 
KnownNat n => SingI Nat n 
KnownSymbol n => SingI Symbol n 
SingI () () 
SingI [k] ([] k) 
SingI (Maybe k) (Nothing k) 
SingI a0 n0 => SingI (Maybe a) (Just a n) 
(SingI a0 n0, SingI [a0] n1) => SingI [a] ((:) a n n) 
SingI b0 n0 => SingI (Either k b) (Right k b n) 
SingI a0 n0 => SingI (Either a k) (Left a k n) 
(SingI a0 n0, SingI b0 n1) => SingI ((,) a b) ((,) a b n n) 
(SingI a0 n0, SingI b0 n1, SingI c0 n2) => SingI ((,,) a b c) ((,,) a b c n n n) 
(SingI a0 n0, SingI b0 n1, SingI c0 n2, SingI d0 n3) => SingI ((,,,) a b c d) ((,,,) a b c d n n n n) 
(SingI a0 n0, SingI b0 n1, SingI c0 n2, SingI d0 n3, SingI e0 n4) => SingI ((,,,,) a b c d e) ((,,,,) a b c d e n n n n n) 
(SingI a0 n0, SingI b0 n1, SingI c0 n2, SingI d0 n3, SingI e0 n4, SingI f0 n5) => SingI ((,,,,,) a b c d e f) ((,,,,,) a b c d e f n n n n n n) 
(SingI a0 n0, SingI b0 n1, SingI c0 n2, SingI d0 n3, SingI e0 n4, SingI f0 n5, SingI g0 n6) => SingI ((,,,,,,) a b c d e f g) ((,,,,,,) a b c d e f g n n n n n n n) 

class (kparam ~ KProxy) => SingKind kparam where Source

The SingKind class is essentially 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.

Associated Types

type DemoteRep kparam :: * Source

Get a base type from a proxy for the promoted kind. For example, DemoteRep ('KProxy :: KProxy Bool) will be the type Bool.

Methods

fromSing :: Sing (a :: k) -> DemoteRep kparam Source

Convert a singleton to its unrefined version.

toSing :: DemoteRep kparam -> SomeSing kparam Source

Convert an unrefined type to an existentially-quantified singleton type.

Instances

SingKind Bool (KProxy Bool) 
SingKind Ordering (KProxy Ordering) 
SingKind * (KProxy *) 
SingKind Nat (KProxy Nat) 
SingKind Symbol (KProxy Symbol) 
SingKind () (KProxy ()) 
SingKind a0 (KProxy a0) => SingKind [a] (KProxy [a]) 
SingKind a0 (KProxy a0) => SingKind (Maybe a) (KProxy (Maybe a)) 
(SingKind k1 (KProxy k1), SingKind k2 (KProxy k2)) => SingKind (TyFun k1 k2 -> *) (KProxy (TyFun k1 k2 -> *)) 
(SingKind a0 (KProxy a0), SingKind b0 (KProxy b0)) => SingKind (Either a b) (KProxy (Either a b)) 
(SingKind a0 (KProxy a0), SingKind b0 (KProxy b0)) => SingKind ((,) a b) (KProxy ((,) a b)) 
(SingKind a0 (KProxy a0), SingKind b0 (KProxy b0), SingKind c0 (KProxy c0)) => SingKind ((,,) a b c) (KProxy ((,,) a b c)) 
(SingKind a0 (KProxy a0), SingKind b0 (KProxy b0), SingKind c0 (KProxy c0), SingKind d0 (KProxy d0)) => SingKind ((,,,) a b c d) (KProxy ((,,,) a b c d)) 
(SingKind a0 (KProxy a0), SingKind b0 (KProxy b0), SingKind c0 (KProxy c0), SingKind d0 (KProxy d0), SingKind e0 (KProxy e0)) => SingKind ((,,,,) a b c d e) (KProxy ((,,,,) a b c d e)) 
(SingKind a0 (KProxy a0), SingKind b0 (KProxy b0), SingKind c0 (KProxy c0), SingKind d0 (KProxy d0), SingKind e0 (KProxy e0), SingKind f0 (KProxy f0)) => SingKind ((,,,,,) a b c d e f) (KProxy ((,,,,,) a b c d e f)) 
(SingKind a0 (KProxy a0), SingKind b0 (KProxy b0), SingKind c0 (KProxy c0), SingKind d0 (KProxy d0), SingKind e0 (KProxy e0), SingKind f0 (KProxy f0), SingKind g0 (KProxy g0)) => SingKind ((,,,,,,) a b c d e f g) (KProxy ((,,,,,,) a b c d e f g)) 

Working with singletons

type KindOf a = (KProxy :: KProxy k) Source

Convenient synonym to refer to the kind of a type variable: type KindOf (a :: k) = ('KProxy :: KProxy k)

type Demote a = DemoteRep (KProxy :: KProxy k) Source

Convenient abbreviation for DemoteRep: type Demote (a :: k) = DemoteRep ('KProxy :: KProxy k)

data SingInstance a where Source

A SingInstance wraps up a SingI instance for explicit handling.

Constructors

SingInstance :: SingI a => SingInstance a 

data SomeSing kproxy where Source

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 index will be. To make use of this type, you will generally have to use a pattern-match:

foo :: Bool -> ...
foo b = case toSing b of
          SomeSing sb -> {- fancy dependently-typed code with sb -}

An example like the one above may be easier to write using withSomeSing.

Constructors

SomeSing :: Sing (a :: k) -> SomeSing (KProxy :: KProxy k) 

singInstance :: forall a. Sing a -> SingInstance a Source

Get an implicit singleton (a SingI instance) from an explicit one.

withSingI :: Sing n -> (SingI n => r) -> r Source

Convenience function for creating a context with an implicit singleton available.

withSomeSing Source

Arguments

:: SingKind (KProxy :: KProxy k) 
=> DemoteRep (KProxy :: KProxy k)

The original datatype

-> (forall a. Sing a -> r)

Function expecting a singleton

-> r 

Convert a normal datatype (like Bool) to a singleton for that datatype, passing it into a continuation.

singByProxy :: SingI a => proxy a -> Sing a Source

Allows creation of a singleton when a proxy is at hand.

singByProxy# :: SingI a => Proxy# a -> Sing a Source

Allows creation of a singleton when a proxy# is at hand.

withSing :: SingI a => (Sing a -> b) -> b Source

A convenience function useful when we need to name a singleton value multiple times. Without this function, each use of sing could potentially refer to a different singleton, and one has to use type signatures (often with ScopedTypeVariables) to ensure that they are the same.

singThat :: forall a. (SingKind (KProxy :: KProxy k), SingI a) => (Demote a -> Bool) -> Maybe (Sing a) Source

A convenience function that names a singleton satisfying a certain 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.

Defunctionalization

data TyFun :: * -> * -> * Source

Representation of the kind of a type-level function. The difference between term-level arrows and this type-level arrow is that at the term level applications can be unsaturated, whereas at the type level all applications have to be fully saturated.

Instances

SuppressUnusedWarnings (Bool -> TyFun Bool Bool -> *) (:&&$$) 
SuppressUnusedWarnings (Bool -> TyFun Bool Bool -> *) (:||$$) 
SuppressUnusedWarnings (Ordering -> TyFun Ordering Ordering -> *) ThenCmpSym1 
SuppressUnusedWarnings (Nat -> TyFun Nat Nat -> *) (:^$$) 
SuppressUnusedWarnings (Nat -> TyFun Nat Nat -> *) (:*$$) 
SuppressUnusedWarnings (Nat -> TyFun Nat Nat -> *) (:-$$) 
SuppressUnusedWarnings (Nat -> TyFun Nat Nat -> *) (:+$$) 
SuppressUnusedWarnings (TyFun Bool Bool -> *) NotSym0 
SuppressUnusedWarnings (TyFun Bool (TyFun Bool Bool -> *) -> *) (:&&$) 
SuppressUnusedWarnings (TyFun Bool (TyFun Bool Bool -> *) -> *) (:||$) 
SuppressUnusedWarnings (TyFun [Bool] Bool -> *) AndSym0 
SuppressUnusedWarnings (TyFun [Bool] Bool -> *) OrSym0 
SuppressUnusedWarnings (TyFun [Nat] Nat -> *) SumSym0 
SuppressUnusedWarnings (TyFun [Nat] Nat -> *) ProductSym0 
SuppressUnusedWarnings (TyFun Ordering (TyFun Ordering Ordering -> *) -> *) ThenCmpSym0 
SuppressUnusedWarnings (TyFun Nat (TyFun Nat Nat -> *) -> *) (:^$) 
SuppressUnusedWarnings (TyFun Nat (TyFun Nat Nat -> *) -> *) (:*$) 
SuppressUnusedWarnings (TyFun Nat (TyFun Nat Nat -> *) -> *) (:-$) 
SuppressUnusedWarnings (TyFun Nat (TyFun Nat Nat -> *) -> *) (:+$) 
SuppressUnusedWarnings ((TyFun k Bool -> *) -> TyFun (TyFun k k -> *) (TyFun k k -> *) -> *) (UntilSym1 k) 
SuppressUnusedWarnings ((TyFun k Bool -> *) -> (TyFun k k -> *) -> TyFun k k -> *) (UntilSym2 k) 
SuppressUnusedWarnings ((TyFun k Bool -> *) -> TyFun [k] Bool -> *) (Any_Sym1 k) 
SuppressUnusedWarnings ((TyFun k (TyFun k Bool -> *) -> *) -> TyFun [k] (TyFun [k] [k] -> *) -> *) (DeleteFirstsBySym1 k) 
SuppressUnusedWarnings ((TyFun k (TyFun k Bool -> *) -> *) -> [k] -> TyFun [k] [k] -> *) (DeleteFirstsBySym2 k) 
SuppressUnusedWarnings ((TyFun k (TyFun k Ordering -> *) -> *) -> TyFun [k] k -> *) (MinimumBySym1 k) 
SuppressUnusedWarnings ((TyFun k (TyFun k Ordering -> *) -> *) -> TyFun [k] k -> *) (MaximumBySym1 k) 
SuppressUnusedWarnings ((TyFun k (TyFun k k -> *) -> *) -> TyFun [k] k -> *) (Foldl1Sym1 k) 
SuppressUnusedWarnings ((TyFun k (TyFun k k -> *) -> *) -> TyFun [k] k -> *) (Foldl1'Sym1 k) 
SuppressUnusedWarnings ((TyFun k (TyFun k k -> *) -> *) -> TyFun [k] k -> *) (Foldr1Sym1 k) 
SuppressUnusedWarnings ((TyFun k Bool -> *) -> TyFun [k] Bool -> *) (AllSym1 k) 
SuppressUnusedWarnings ((TyFun k (TyFun k k -> *) -> *) -> TyFun [k] [k] -> *) (Scanl1Sym1 k) 
SuppressUnusedWarnings ((TyFun k (TyFun k k -> *) -> *) -> TyFun [k] [k] -> *) (Scanr1Sym1 k) 
SuppressUnusedWarnings ((TyFun k (TyFun k Bool -> *) -> *) -> TyFun k (TyFun [k] [k] -> *) -> *) (DeleteBySym1 k) 
SuppressUnusedWarnings ((TyFun k (TyFun k Bool -> *) -> *) -> k -> TyFun [k] [k] -> *) (DeleteBySym2 k) 
SuppressUnusedWarnings ((TyFun k (TyFun k Ordering -> *) -> *) -> TyFun [k] [k] -> *) (SortBySym1 k) 
SuppressUnusedWarnings ((TyFun k (TyFun k Ordering -> *) -> *) -> TyFun k (TyFun [k] [k] -> *) -> *) (InsertBySym1 k) 
SuppressUnusedWarnings ((TyFun k (TyFun k Ordering -> *) -> *) -> k -> TyFun [k] [k] -> *) (InsertBySym2 k) 
SuppressUnusedWarnings ((TyFun k Bool -> *) -> TyFun [k] (Maybe Nat) -> *) (FindIndexSym1 k) 
SuppressUnusedWarnings ((TyFun k Bool -> *) -> TyFun [k] [Nat] -> *) (FindIndicesSym1 k) 
SuppressUnusedWarnings ((TyFun k Bool -> *) -> TyFun [k] [k] -> *) (TakeWhileSym1 k) 
SuppressUnusedWarnings ((TyFun k Bool -> *) -> TyFun [k] [k] -> *) (DropWhileSym1 k) 
SuppressUnusedWarnings ((TyFun k Bool -> *) -> TyFun [k] [k] -> *) (DropWhileEndSym1 k) 
SuppressUnusedWarnings ((TyFun k (TyFun k Bool -> *) -> *) -> TyFun [k] [[k]] -> *) (GroupBySym1 k) 
SuppressUnusedWarnings ((TyFun k Bool -> *) -> TyFun [k] ((,) [k] [k]) -> *) (SpanSym1 k) 
SuppressUnusedWarnings ((TyFun k Bool -> *) -> TyFun [k] ((,) [k] [k]) -> *) (BreakSym1 k) 
SuppressUnusedWarnings ((TyFun k Bool -> *) -> TyFun [k] (Maybe k) -> *) (FindSym1 k) 
SuppressUnusedWarnings ((TyFun k (TyFun k Bool -> *) -> *) -> TyFun [k] (TyFun [k] [k] -> *) -> *) (IntersectBySym1 k) 
SuppressUnusedWarnings ((TyFun k (TyFun k Bool -> *) -> *) -> [k] -> TyFun [k] [k] -> *) (IntersectBySym2 k) 
SuppressUnusedWarnings ((TyFun k Bool -> *) -> TyFun [k] [k] -> *) (FilterSym1 k) 
SuppressUnusedWarnings ((TyFun k Bool -> *) -> TyFun [k] ((,) [k] [k]) -> *) (PartitionSym1 k) 
SuppressUnusedWarnings ((TyFun k (TyFun k Bool -> *) -> *) -> TyFun [k] (TyFun [k] [k] -> *) -> *) (UnionBySym1 k) 
SuppressUnusedWarnings ((TyFun k (TyFun k Bool -> *) -> *) -> [k] -> TyFun [k] [k] -> *) (UnionBySym2 k) 
SuppressUnusedWarnings ((TyFun k (TyFun k Bool -> *) -> *) -> TyFun [k] [k] -> *) (NubBySym1 k) 
SuppressUnusedWarnings ([k] -> TyFun [k] [k] -> *) ((:++$$) k) 
SuppressUnusedWarnings ([k] -> TyFun [k] Bool -> *) (IsSuffixOfSym1 k) 
SuppressUnusedWarnings ([k] -> TyFun [[k]] [k] -> *) (IntercalateSym1 k) 
SuppressUnusedWarnings ([k] -> TyFun [k] [k] -> *) ((:\\$$) k) 
SuppressUnusedWarnings ([k] -> TyFun [k] Bool -> *) (IsInfixOfSym1 k) 
SuppressUnusedWarnings ([k] -> TyFun [k] Bool -> *) (IsPrefixOfSym1 k) 
SuppressUnusedWarnings ([k] -> TyFun [k] (Maybe [k]) -> *) (StripPrefixSym1 k) 
SuppressUnusedWarnings ([k] -> TyFun [k] [k] -> *) (IntersectSym1 k) 
SuppressUnusedWarnings ([k] -> TyFun Nat k -> *) ((:!!$$) k) 
SuppressUnusedWarnings ([k] -> TyFun [k] [k] -> *) (UnionSym1 k) 
SuppressUnusedWarnings (Nat -> TyFun [k] ((,) [k] [k]) -> *) (SplitAtSym1 k) 
SuppressUnusedWarnings (Nat -> TyFun [k] [k] -> *) (TakeSym1 k) 
SuppressUnusedWarnings (Nat -> TyFun [k] [k] -> *) (DropSym1 k) 
SuppressUnusedWarnings (Nat -> TyFun k [k] -> *) (ReplicateSym1 k) 
SuppressUnusedWarnings (k -> TyFun [k] [k] -> *) ((:$$) k) 
SuppressUnusedWarnings (k -> TyFun k (TyFun Bool k -> *) -> *) (Bool_Sym1 k) 
SuppressUnusedWarnings (k -> k -> TyFun Bool k -> *) (Bool_Sym2 k) 
SuppressUnusedWarnings (k -> TyFun k Bool -> *) ((:/=$$) k) 
SuppressUnusedWarnings (k -> TyFun k Bool -> *) ((:==$$) k) 
SuppressUnusedWarnings (k -> TyFun k k -> *) (MinSym1 k) 
SuppressUnusedWarnings (k -> TyFun k k -> *) (MaxSym1 k) 
SuppressUnusedWarnings (k -> TyFun k Bool -> *) ((:<=$$) k) 
SuppressUnusedWarnings (k -> TyFun k Bool -> *) ((:>$$) k) 
SuppressUnusedWarnings (k -> TyFun k Bool -> *) ((:>=$$) k) 
SuppressUnusedWarnings (k -> TyFun k Bool -> *) ((:<$$) k) 
SuppressUnusedWarnings (k -> TyFun k Ordering -> *) (CompareSym1 k) 
SuppressUnusedWarnings (k -> TyFun k k -> *) (AsTypeOfSym1 k) 
SuppressUnusedWarnings (k -> TyFun [k] [k] -> *) (IntersperseSym1 k) 
SuppressUnusedWarnings (k -> TyFun [k] Bool -> *) (ElemSym1 k) 
SuppressUnusedWarnings (k -> TyFun [k] Bool -> *) (NotElemSym1 k) 
SuppressUnusedWarnings (k -> TyFun [k] [k] -> *) (DeleteSym1 k) 
SuppressUnusedWarnings (k -> TyFun (Maybe k) k -> *) (FromMaybeSym1 k) 
SuppressUnusedWarnings (k -> TyFun [k] (Maybe Nat) -> *) (ElemIndexSym1 k) 
SuppressUnusedWarnings (k -> TyFun [k] [Nat] -> *) (ElemIndicesSym1 k) 
SuppressUnusedWarnings (k -> TyFun [k] [k] -> *) (InsertSym1 k) 
SuppressUnusedWarnings (TyFun (TyFun k Bool -> *) (TyFun (TyFun k k -> *) (TyFun k k -> *) -> *) -> *) (UntilSym0 k) 
SuppressUnusedWarnings (TyFun (TyFun k Bool -> *) (TyFun [k] Bool -> *) -> *) (Any_Sym0 k) 
SuppressUnusedWarnings (TyFun (TyFun k (TyFun k Bool -> *) -> *) (TyFun [k] (TyFun [k] [k] -> *) -> *) -> *) (DeleteFirstsBySym0 k) 
SuppressUnusedWarnings (TyFun (TyFun k (TyFun k Ordering -> *) -> *) (TyFun [k] k -> *) -> *) (MinimumBySym0 k) 
SuppressUnusedWarnings (TyFun (TyFun k (TyFun k Ordering -> *) -> *) (TyFun [k] k -> *) -> *) (MaximumBySym0 k) 
SuppressUnusedWarnings (TyFun (TyFun k (TyFun k k -> *) -> *) (TyFun [k] k -> *) -> *) (Foldl1Sym0 k) 
SuppressUnusedWarnings (TyFun (TyFun k (TyFun k k -> *) -> *) (TyFun [k] k -> *) -> *) (Foldl1'Sym0 k) 
SuppressUnusedWarnings (TyFun (TyFun k (TyFun k k -> *) -> *) (TyFun [k] k -> *) -> *) (Foldr1Sym0 k) 
SuppressUnusedWarnings (TyFun (TyFun k Bool -> *) (TyFun [k] Bool -> *) -> *) (AllSym0 k) 
SuppressUnusedWarnings (TyFun (TyFun k (TyFun k k -> *) -> *) (TyFun [k] [k] -> *) -> *) (Scanl1Sym0 k) 
SuppressUnusedWarnings (TyFun (TyFun k (TyFun k k -> *) -> *) (TyFun [k] [k] -> *) -> *) (Scanr1Sym0 k) 
SuppressUnusedWarnings (TyFun (TyFun k (TyFun k Bool -> *) -> *) (TyFun k (TyFun [k] [k] -> *) -> *) -> *) (DeleteBySym0 k) 
SuppressUnusedWarnings (TyFun (TyFun k (TyFun k Ordering -> *) -> *) (TyFun [k] [k] -> *) -> *) (SortBySym0 k) 
SuppressUnusedWarnings (TyFun (TyFun k (TyFun k Ordering -> *) -> *) (TyFun k (TyFun [k] [k] -> *) -> *) -> *) (InsertBySym0 k) 
SuppressUnusedWarnings (TyFun (TyFun k Bool -> *) (TyFun [k] (Maybe Nat) -> *) -> *) (FindIndexSym0 k) 
SuppressUnusedWarnings (TyFun (TyFun k Bool -> *) (TyFun [k] [Nat] -> *) -> *) (FindIndicesSym0 k) 
SuppressUnusedWarnings (TyFun (TyFun k Bool -> *) (TyFun [k] [k] -> *) -> *) (TakeWhileSym0 k) 
SuppressUnusedWarnings (TyFun (TyFun k Bool -> *) (TyFun [k] [k] -> *) -> *) (DropWhileSym0 k) 
SuppressUnusedWarnings (TyFun (TyFun k Bool -> *) (TyFun [k] [k] -> *) -> *) (DropWhileEndSym0 k) 
SuppressUnusedWarnings (TyFun (TyFun k (TyFun k Bool -> *) -> *) (TyFun [k] [[k]] -> *) -> *) (GroupBySym0 k) 
SuppressUnusedWarnings (TyFun (TyFun k Bool -> *) (TyFun [k] ((,) [k] [k]) -> *) -> *) (SpanSym0 k) 
SuppressUnusedWarnings (TyFun (TyFun k Bool -> *) (TyFun [k] ((,) [k] [k]) -> *) -> *) (BreakSym0 k) 
SuppressUnusedWarnings (TyFun (TyFun k Bool -> *) (TyFun [k] (Maybe k) -> *) -> *) (FindSym0 k) 
SuppressUnusedWarnings (TyFun (TyFun k (TyFun k Bool -> *) -> *) (TyFun [k] (TyFun [k] [k] -> *) -> *) -> *) (IntersectBySym0 k) 
SuppressUnusedWarnings (TyFun (TyFun k Bool -> *) (TyFun [k] [k] -> *) -> *) (FilterSym0 k) 
SuppressUnusedWarnings (TyFun (TyFun k Bool -> *) (TyFun [k] ((,) [k] [k]) -> *) -> *) (PartitionSym0 k) 
SuppressUnusedWarnings (TyFun (TyFun k (TyFun k Bool -> *) -> *) (TyFun [k] (TyFun [k] [k] -> *) -> *) -> *) (UnionBySym0 k) 
SuppressUnusedWarnings (TyFun (TyFun k (TyFun k Bool -> *) -> *) (TyFun [k] [k] -> *) -> *) (NubBySym0 k) 
SuppressUnusedWarnings (TyFun [[k]] [k] -> *) (ConcatSym0 k) 
SuppressUnusedWarnings (TyFun [[k]] [[k]] -> *) (TransposeSym0 k) 
SuppressUnusedWarnings (TyFun [k] (TyFun [k] [k] -> *) -> *) ((:++$) k) 
SuppressUnusedWarnings (TyFun [k] k -> *) (HeadSym0 k) 
SuppressUnusedWarnings (TyFun [k] k -> *) (LastSym0 k) 
SuppressUnusedWarnings (TyFun [k] [k] -> *) (TailSym0 k) 
SuppressUnusedWarnings (TyFun [k] [k] -> *) (InitSym0 k) 
SuppressUnusedWarnings (TyFun [k] Bool -> *) (NullSym0 k) 
SuppressUnusedWarnings (TyFun [k] (TyFun [k] Bool -> *) -> *) (IsSuffixOfSym0 k) 
SuppressUnusedWarnings (TyFun [k] [k] -> *) (ReverseSym0 k) 
SuppressUnusedWarnings (TyFun [k] (TyFun [[k]] [k] -> *) -> *) (IntercalateSym0 k) 
SuppressUnusedWarnings (TyFun [k] [[k]] -> *) (SubsequencesSym0 k) 
SuppressUnusedWarnings (TyFun [k] [[k]] -> *) (PermutationsSym0 k) 
SuppressUnusedWarnings (TyFun [k] (TyFun [k] [k] -> *) -> *) ((:\\$) k) 
SuppressUnusedWarnings (TyFun [k] [[k]] -> *) (InitsSym0 k) 
SuppressUnusedWarnings (TyFun [k] (TyFun [k] Bool -> *) -> *) (IsInfixOfSym0 k) 
SuppressUnusedWarnings (TyFun [k] [[k]] -> *) (TailsSym0 k) 
SuppressUnusedWarnings (TyFun [k] (TyFun [k] Bool -> *) -> *) (IsPrefixOfSym0 k) 
SuppressUnusedWarnings (TyFun [k] (Maybe k) -> *) (ListToMaybeSym0 k) 
SuppressUnusedWarnings (TyFun [k] Nat -> *) (LengthSym0 k) 
SuppressUnusedWarnings (TyFun [k] [[k]] -> *) (GroupSym0 k) 
SuppressUnusedWarnings (TyFun [k] (TyFun [k] (Maybe [k]) -> *) -> *) (StripPrefixSym0 k) 
SuppressUnusedWarnings (TyFun [k] k -> *) (MaximumSym0 k) 
SuppressUnusedWarnings (TyFun [k] k -> *) (MinimumSym0 k) 
SuppressUnusedWarnings (TyFun [k] [k] -> *) (SortSym0 k) 
SuppressUnusedWarnings (TyFun [k] (TyFun [k] [k] -> *) -> *) (IntersectSym0 k) 
SuppressUnusedWarnings (TyFun [k] (TyFun Nat k -> *) -> *) ((:!!$) k) 
SuppressUnusedWarnings (TyFun [k] [k] -> *) (NubSym0 k) 
SuppressUnusedWarnings (TyFun [k] (TyFun [k] [k] -> *) -> *) (UnionSym0 k) 
SuppressUnusedWarnings (TyFun [Maybe k] [k] -> *) (CatMaybesSym0 k) 
SuppressUnusedWarnings (TyFun Nat (TyFun [k] ((,) [k] [k]) -> *) -> *) (SplitAtSym0 k) 
SuppressUnusedWarnings (TyFun Nat (TyFun [k] [k] -> *) -> *) (TakeSym0 k) 
SuppressUnusedWarnings (TyFun Nat (TyFun [k] [k] -> *) -> *) (DropSym0 k) 
SuppressUnusedWarnings (TyFun Nat (TyFun k [k] -> *) -> *) (ReplicateSym0 k) 
SuppressUnusedWarnings (TyFun k (TyFun [k] [k] -> *) -> *) ((:$) k) 
SuppressUnusedWarnings (TyFun k (Maybe k) -> *) (JustSym0 k) 
SuppressUnusedWarnings (TyFun k (TyFun k (TyFun Bool k -> *) -> *) -> *) (Bool_Sym0 k) 
SuppressUnusedWarnings (TyFun k (TyFun k Bool -> *) -> *) ((:/=$) k) 
SuppressUnusedWarnings (TyFun k (TyFun k Bool -> *) -> *) ((:==$) k) 
SuppressUnusedWarnings (TyFun k (TyFun k k -> *) -> *) (MinSym0 k) 
SuppressUnusedWarnings (TyFun k (TyFun k k -> *) -> *) (MaxSym0 k) 
SuppressUnusedWarnings (TyFun k (TyFun k Bool -> *) -> *) ((:<=$) k) 
SuppressUnusedWarnings (TyFun k (TyFun k Bool -> *) -> *) ((:>$) k) 
SuppressUnusedWarnings (TyFun k (TyFun k Bool -> *) -> *) ((:>=$) k) 
SuppressUnusedWarnings (TyFun k (TyFun k Bool -> *) -> *) ((:<$) k) 
SuppressUnusedWarnings (TyFun k (TyFun k Ordering -> *) -> *) (CompareSym0 k) 
SuppressUnusedWarnings (TyFun k k -> *) (IdSym0 k) 
SuppressUnusedWarnings (TyFun k (TyFun k k -> *) -> *) (AsTypeOfSym0 k) 
SuppressUnusedWarnings (TyFun k (TyFun [k] [k] -> *) -> *) (IntersperseSym0 k) 
SuppressUnusedWarnings (TyFun k (TyFun [k] Bool -> *) -> *) (ElemSym0 k) 
SuppressUnusedWarnings (TyFun k (TyFun [k] Bool -> *) -> *) (NotElemSym0 k) 
SuppressUnusedWarnings (TyFun k (TyFun [k] [k] -> *) -> *) (DeleteSym0 k) 
SuppressUnusedWarnings (TyFun k (TyFun (Maybe k) k -> *) -> *) (FromMaybeSym0 k) 
SuppressUnusedWarnings (TyFun k (TyFun [k] (Maybe Nat) -> *) -> *) (ElemIndexSym0 k) 
SuppressUnusedWarnings (TyFun k (TyFun [k] [Nat] -> *) -> *) (ElemIndicesSym0 k) 
SuppressUnusedWarnings (TyFun k (TyFun [k] [k] -> *) -> *) (InsertSym0 k) 
SuppressUnusedWarnings (TyFun (Maybe k) Bool -> *) (IsJustSym0 k) 
SuppressUnusedWarnings (TyFun (Maybe k) Bool -> *) (IsNothingSym0 k) 
SuppressUnusedWarnings (TyFun (Maybe k) k -> *) (FromJustSym0 k) 
SuppressUnusedWarnings (TyFun (Maybe k) [k] -> *) (MaybeToListSym0 k) 
(SingKind k1 (KProxy k1), SingKind k2 (KProxy k2)) => SingKind (TyFun k1 k2 -> *) (KProxy (TyFun k1 k2 -> *)) 
SuppressUnusedWarnings ((TyFun k (TyFun k k -> *) -> *) -> TyFun k (TyFun [k] k -> *) -> *) (FoldrSym1 k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k k -> *) -> *) -> k -> TyFun [k] k -> *) (FoldrSym2 k k) 
SuppressUnusedWarnings ((TyFun k k -> *) -> TyFun [k] [k] -> *) (MapSym1 k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k k -> *) -> *) -> TyFun k (TyFun [k] k -> *) -> *) (FoldlSym1 k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k k -> *) -> *) -> k -> TyFun [k] k -> *) (FoldlSym2 k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k k -> *) -> *) -> TyFun k (TyFun [k] k -> *) -> *) (Foldl'Sym1 k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k k -> *) -> *) -> k -> TyFun [k] k -> *) (Foldl'Sym2 k k) 
SuppressUnusedWarnings ((TyFun k [k] -> *) -> TyFun [k] [k] -> *) (ConcatMapSym1 k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k k -> *) -> *) -> TyFun k (TyFun [k] [k] -> *) -> *) (ScanlSym1 k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k k -> *) -> *) -> k -> TyFun [k] [k] -> *) (ScanlSym2 k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k k -> *) -> *) -> TyFun k (TyFun [k] [k] -> *) -> *) (ScanrSym1 k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k k -> *) -> *) -> k -> TyFun [k] [k] -> *) (ScanrSym2 k k) 
SuppressUnusedWarnings ((TyFun k (Maybe ((,) k k)) -> *) -> TyFun k [k] -> *) (UnfoldrSym1 k k) 
SuppressUnusedWarnings ((TyFun k (Maybe k) -> *) -> TyFun [k] [k] -> *) (MapMaybeSym1 k k) 
SuppressUnusedWarnings ([k] -> TyFun [k] [(,) k k] -> *) (ZipSym1 k k) 
SuppressUnusedWarnings ([k] -> TyFun k k -> *) (GenericIndexSym1 k k) 
SuppressUnusedWarnings (k -> TyFun k ((,) k k) -> *) (Tuple2Sym1 k k) 
SuppressUnusedWarnings (k -> TyFun k k -> *) (ConstSym1 k k) 
SuppressUnusedWarnings (k -> TyFun k k -> *) (SeqSym1 k k) 
SuppressUnusedWarnings (k -> TyFun (TyFun k k -> *) (TyFun (Maybe k) k -> *) -> *) (Maybe_Sym1 k k) 
SuppressUnusedWarnings (k -> (TyFun k k -> *) -> TyFun (Maybe k) k -> *) (Maybe_Sym2 k k) 
SuppressUnusedWarnings (k -> TyFun k [k] -> *) (GenericReplicateSym1 k k) 
SuppressUnusedWarnings (k -> TyFun [k] [k] -> *) (GenericTakeSym1 k k) 
SuppressUnusedWarnings (k -> TyFun [k] ((,) [k] [k]) -> *) (GenericSplitAtSym1 k k) 
SuppressUnusedWarnings (k -> TyFun [k] [k] -> *) (GenericDropSym1 k k) 
SuppressUnusedWarnings (k -> TyFun [(,) k k] (Maybe k) -> *) (LookupSym1 k k) 
SuppressUnusedWarnings (TyFun (TyFun k (TyFun k k -> *) -> *) (TyFun k (TyFun [k] k -> *) -> *) -> *) (FoldrSym0 k k) 
SuppressUnusedWarnings (TyFun (TyFun k k -> *) (TyFun [k] [k] -> *) -> *) (MapSym0 k k) 
SuppressUnusedWarnings (TyFun (TyFun k (TyFun k k -> *) -> *) (TyFun k (TyFun [k] k -> *) -> *) -> *) (FoldlSym0 k k) 
SuppressUnusedWarnings (TyFun (TyFun k (TyFun k k -> *) -> *) (TyFun k (TyFun [k] k -> *) -> *) -> *) (Foldl'Sym0 k k) 
SuppressUnusedWarnings (TyFun (TyFun k [k] -> *) (TyFun [k] [k] -> *) -> *) (ConcatMapSym0 k k) 
SuppressUnusedWarnings (TyFun (TyFun k (TyFun k k -> *) -> *) (TyFun k (TyFun [k] [k] -> *) -> *) -> *) (ScanlSym0 k k) 
SuppressUnusedWarnings (TyFun (TyFun k (TyFun k k -> *) -> *) (TyFun k (TyFun [k] [k] -> *) -> *) -> *) (ScanrSym0 k k) 
SuppressUnusedWarnings (TyFun (TyFun k (Maybe ((,) k k)) -> *) (TyFun k [k] -> *) -> *) (UnfoldrSym0 k k) 
SuppressUnusedWarnings (TyFun (TyFun k (Maybe k) -> *) (TyFun [k] [k] -> *) -> *) (MapMaybeSym0 k k) 
SuppressUnusedWarnings (TyFun [Either k k] [k] -> *) (LeftsSym0 k k) 
SuppressUnusedWarnings (TyFun [Either k k] [k] -> *) (RightsSym0 k k) 
SuppressUnusedWarnings (TyFun [(,) k k] ((,) [k] [k]) -> *) (UnzipSym0 k k) 
SuppressUnusedWarnings (TyFun [k] (TyFun [k] [(,) k k] -> *) -> *) (ZipSym0 k k) 
SuppressUnusedWarnings (TyFun [k] k -> *) (GenericLengthSym0 k k) 
SuppressUnusedWarnings (TyFun [k] (TyFun k k -> *) -> *) (GenericIndexSym0 k k) 
SuppressUnusedWarnings (TyFun (Either k k) Bool -> *) (IsLeftSym0 k k) 
SuppressUnusedWarnings (TyFun (Either k k) Bool -> *) (IsRightSym0 k k) 
SuppressUnusedWarnings (TyFun ((,) k k) k -> *) (FstSym0 k k) 
SuppressUnusedWarnings (TyFun ((,) k k) k -> *) (SndSym0 k k) 
SuppressUnusedWarnings (TyFun ((,) k k) ((,) k k) -> *) (SwapSym0 k k) 
SuppressUnusedWarnings (TyFun k (TyFun k ((,) k k) -> *) -> *) (Tuple2Sym0 k k) 
SuppressUnusedWarnings (TyFun k (Either k k) -> *) (RightSym0 k k) 
SuppressUnusedWarnings (TyFun k (Either k k) -> *) (LeftSym0 k k) 
SuppressUnusedWarnings (TyFun k (TyFun k k -> *) -> *) (ConstSym0 k k) 
SuppressUnusedWarnings (TyFun k (TyFun k k -> *) -> *) (SeqSym0 k k) 
SuppressUnusedWarnings (TyFun k (TyFun (TyFun k k -> *) (TyFun (Maybe k) k -> *) -> *) -> *) (Maybe_Sym0 k k) 
SuppressUnusedWarnings (TyFun k (TyFun k [k] -> *) -> *) (GenericReplicateSym0 k k) 
SuppressUnusedWarnings (TyFun k (TyFun [k] [k] -> *) -> *) (GenericTakeSym0 k k) 
SuppressUnusedWarnings (TyFun k (TyFun [k] ((,) [k] [k]) -> *) -> *) (GenericSplitAtSym0 k k) 
SuppressUnusedWarnings (TyFun k (TyFun [k] [k] -> *) -> *) (GenericDropSym0 k k) 
SuppressUnusedWarnings (TyFun k (TyFun [(,) k k] (Maybe k) -> *) -> *) (LookupSym0 k k) 
SuppressUnusedWarnings ((TyFun ((,) k k) k -> *) -> TyFun k (TyFun k k -> *) -> *) (CurrySym1 k k k) 
SuppressUnusedWarnings ((TyFun ((,) k k) k -> *) -> k -> TyFun k k -> *) (CurrySym2 k k k) 
SuppressUnusedWarnings ((TyFun k k -> *) -> TyFun (TyFun k k -> *) (TyFun k k -> *) -> *) ((:.$$) k k k) 
SuppressUnusedWarnings ((TyFun k k -> *) -> (TyFun k k -> *) -> TyFun k k -> *) ((:.$$$) k k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k k -> *) -> *) -> TyFun k (TyFun k k -> *) -> *) (FlipSym1 k k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k k -> *) -> *) -> k -> TyFun k k -> *) (FlipSym2 k k k) 
SuppressUnusedWarnings ((TyFun k k -> *) -> TyFun (TyFun k k -> *) (TyFun (Either k k) k -> *) -> *) (Either_Sym1 k k k) 
SuppressUnusedWarnings ((TyFun k k -> *) -> (TyFun k k -> *) -> TyFun (Either k k) k -> *) (Either_Sym2 k k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k k -> *) -> *) -> TyFun ((,) k k) k -> *) (UncurrySym1 k k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k ((,) k k) -> *) -> *) -> TyFun k (TyFun [k] ((,) k [k]) -> *) -> *) (MapAccumLSym1 k k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k ((,) k k) -> *) -> *) -> k -> TyFun [k] ((,) k [k]) -> *) (MapAccumLSym2 k k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k ((,) k k) -> *) -> *) -> TyFun k (TyFun [k] ((,) k [k]) -> *) -> *) (MapAccumRSym1 k k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k ((,) k k) -> *) -> *) -> k -> TyFun [k] ((,) k [k]) -> *) (MapAccumRSym2 k k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k k -> *) -> *) -> TyFun [k] (TyFun [k] [k] -> *) -> *) (ZipWithSym1 k k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k k -> *) -> *) -> [k] -> TyFun [k] [k] -> *) (ZipWithSym2 k k k) 
SuppressUnusedWarnings ([k] -> TyFun [k] (TyFun [k] [(,,) k k k] -> *) -> *) (Zip3Sym1 k k k) 
SuppressUnusedWarnings ([k] -> [k] -> TyFun [k] [(,,) k k k] -> *) (Zip3Sym2 k k k) 
SuppressUnusedWarnings (k -> TyFun k (TyFun k ((,,) k k k) -> *) -> *) (Tuple3Sym1 k k k) 
SuppressUnusedWarnings (k -> k -> TyFun k ((,,) k k k) -> *) (Tuple3Sym2 k k k) 
SuppressUnusedWarnings (TyFun (TyFun ((,) k k) k -> *) (TyFun k (TyFun k k -> *) -> *) -> *) (CurrySym0 k k k) 
SuppressUnusedWarnings (TyFun (TyFun k k -> *) (TyFun (TyFun k k -> *) (TyFun k k -> *) -> *) -> *) ((:.$) k k k) 
SuppressUnusedWarnings (TyFun (TyFun k (TyFun k k -> *) -> *) (TyFun k (TyFun k k -> *) -> *) -> *) (FlipSym0 k k k) 
SuppressUnusedWarnings (TyFun (TyFun k k -> *) (TyFun (TyFun k k -> *) (TyFun (Either k k) k -> *) -> *) -> *) (Either_Sym0 k k k) 
SuppressUnusedWarnings (TyFun (TyFun k (TyFun k k -> *) -> *) (TyFun ((,) k k) k -> *) -> *) (UncurrySym0 k k k) 
SuppressUnusedWarnings (TyFun (TyFun k (TyFun k ((,) k k) -> *) -> *) (TyFun k (TyFun [k] ((,) k [k]) -> *) -> *) -> *) (MapAccumLSym0 k k k) 
SuppressUnusedWarnings (TyFun (TyFun k (TyFun k ((,) k k) -> *) -> *) (TyFun k (TyFun [k] ((,) k [k]) -> *) -> *) -> *) (MapAccumRSym0 k k k) 
SuppressUnusedWarnings (TyFun (TyFun k (TyFun k k -> *) -> *) (TyFun [k] (TyFun [k] [k] -> *) -> *) -> *) (ZipWithSym0 k k k) 
SuppressUnusedWarnings (TyFun [(,,) k k k] ((,,) [k] [k] [k]) -> *) (Unzip3Sym0 k k k) 
SuppressUnusedWarnings (TyFun [k] (TyFun [k] (TyFun [k] [(,,) k k k] -> *) -> *) -> *) (Zip3Sym0 k k k) 
SuppressUnusedWarnings (TyFun k (TyFun k (TyFun k ((,,) k k k) -> *) -> *) -> *) (Tuple3Sym0 k k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k (TyFun k k -> *) -> *) -> *) -> TyFun [k] (TyFun [k] (TyFun [k] [k] -> *) -> *) -> *) (ZipWith3Sym1 k k k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k (TyFun k k -> *) -> *) -> *) -> [k] -> TyFun [k] (TyFun [k] [k] -> *) -> *) (ZipWith3Sym2 k k k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k (TyFun k k -> *) -> *) -> *) -> [k] -> [k] -> TyFun [k] [k] -> *) (ZipWith3Sym3 k k k k) 
SuppressUnusedWarnings ([k] -> TyFun [k] (TyFun [k] (TyFun [k] [(,,,) k k k k] -> *) -> *) -> *) (Zip4Sym1 k k k k) 
SuppressUnusedWarnings ([k] -> [k] -> TyFun [k] (TyFun [k] [(,,,) k k k k] -> *) -> *) (Zip4Sym2 k k k k) 
SuppressUnusedWarnings ([k] -> [k] -> [k] -> TyFun [k] [(,,,) k k k k] -> *) (Zip4Sym3 k k k k) 
SuppressUnusedWarnings (k -> TyFun k (TyFun k (TyFun k ((,,,) k k k k) -> *) -> *) -> *) (Tuple4Sym1 k k k k) 
SuppressUnusedWarnings (k -> k -> TyFun k (TyFun k ((,,,) k k k k) -> *) -> *) (Tuple4Sym2 k k k k) 
SuppressUnusedWarnings (k -> k -> k -> TyFun k ((,,,) k k k k) -> *) (Tuple4Sym3 k k k k) 
SuppressUnusedWarnings (TyFun (TyFun k (TyFun k (TyFun k k -> *) -> *) -> *) (TyFun [k] (TyFun [k] (TyFun [k] [k] -> *) -> *) -> *) -> *) (ZipWith3Sym0 k k k k) 
SuppressUnusedWarnings (TyFun [(,,,) k k k k] ((,,,) [k] [k] [k] [k]) -> *) (Unzip4Sym0 k k k k) 
SuppressUnusedWarnings (TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] [(,,,) k k k k] -> *) -> *) -> *) -> *) (Zip4Sym0 k k k k) 
SuppressUnusedWarnings (TyFun k (TyFun k (TyFun k (TyFun k ((,,,) k k k k) -> *) -> *) -> *) -> *) (Tuple4Sym0 k k k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k (TyFun k (TyFun k k -> *) -> *) -> *) -> *) -> TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] [k] -> *) -> *) -> *) -> *) (ZipWith4Sym1 k k k k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k (TyFun k (TyFun k k -> *) -> *) -> *) -> *) -> [k] -> TyFun [k] (TyFun [k] (TyFun [k] [k] -> *) -> *) -> *) (ZipWith4Sym2 k k k k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k (TyFun k (TyFun k k -> *) -> *) -> *) -> *) -> [k] -> [k] -> TyFun [k] (TyFun [k] [k] -> *) -> *) (ZipWith4Sym3 k k k k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k (TyFun k (TyFun k k -> *) -> *) -> *) -> *) -> [k] -> [k] -> [k] -> TyFun [k] [k] -> *) (ZipWith4Sym4 k k k k k) 
SuppressUnusedWarnings ([k] -> TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] [(,,,,) k k k k k] -> *) -> *) -> *) -> *) (Zip5Sym1 k k k k k) 
SuppressUnusedWarnings ([k] -> [k] -> TyFun [k] (TyFun [k] (TyFun [k] [(,,,,) k k k k k] -> *) -> *) -> *) (Zip5Sym2 k k k k k) 
SuppressUnusedWarnings ([k] -> [k] -> [k] -> TyFun [k] (TyFun [k] [(,,,,) k k k k k] -> *) -> *) (Zip5Sym3 k k k k k) 
SuppressUnusedWarnings ([k] -> [k] -> [k] -> [k] -> TyFun [k] [(,,,,) k k k k k] -> *) (Zip5Sym4 k k k k k) 
SuppressUnusedWarnings (k -> TyFun k (TyFun k (TyFun k (TyFun k ((,,,,) k k k k k) -> *) -> *) -> *) -> *) (Tuple5Sym1 k k k k k) 
SuppressUnusedWarnings (k -> k -> TyFun k (TyFun k (TyFun k ((,,,,) k k k k k) -> *) -> *) -> *) (Tuple5Sym2 k k k k k) 
SuppressUnusedWarnings (k -> k -> k -> TyFun k (TyFun k ((,,,,) k k k k k) -> *) -> *) (Tuple5Sym3 k k k k k) 
SuppressUnusedWarnings (k -> k -> k -> k -> TyFun k ((,,,,) k k k k k) -> *) (Tuple5Sym4 k k k k k) 
SuppressUnusedWarnings (TyFun (TyFun k (TyFun k (TyFun k (TyFun k k -> *) -> *) -> *) -> *) (TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] [k] -> *) -> *) -> *) -> *) -> *) (ZipWith4Sym0 k k k k k) 
SuppressUnusedWarnings (TyFun [(,,,,) k k k k k] ((,,,,) [k] [k] [k] [k] [k]) -> *) (Unzip5Sym0 k k k k k) 
SuppressUnusedWarnings (TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] [(,,,,) k k k k k] -> *) -> *) -> *) -> *) -> *) (Zip5Sym0 k k k k k) 
SuppressUnusedWarnings (TyFun k (TyFun k (TyFun k (TyFun k (TyFun k ((,,,,) k k k k k) -> *) -> *) -> *) -> *) -> *) (Tuple5Sym0 k k k k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k (TyFun k (TyFun k (TyFun k k -> *) -> *) -> *) -> *) -> *) -> TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] [k] -> *) -> *) -> *) -> *) -> *) (ZipWith5Sym1 k k k k k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k (TyFun k (TyFun k (TyFun k k -> *) -> *) -> *) -> *) -> *) -> [k] -> TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] [k] -> *) -> *) -> *) -> *) (ZipWith5Sym2 k k k k k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k (TyFun k (TyFun k (TyFun k k -> *) -> *) -> *) -> *) -> *) -> [k] -> [k] -> TyFun [k] (TyFun [k] (TyFun [k] [k] -> *) -> *) -> *) (ZipWith5Sym3 k k k k k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k (TyFun k (TyFun k (TyFun k k -> *) -> *) -> *) -> *) -> *) -> [k] -> [k] -> [k] -> TyFun [k] (TyFun [k] [k] -> *) -> *) (ZipWith5Sym4 k k k k k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k (TyFun k (TyFun k (TyFun k k -> *) -> *) -> *) -> *) -> *) -> [k] -> [k] -> [k] -> [k] -> TyFun [k] [k] -> *) (ZipWith5Sym5 k k k k k k) 
SuppressUnusedWarnings ([k] -> TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] [(,,,,,) k k k k k k] -> *) -> *) -> *) -> *) -> *) (Zip6Sym1 k k k k k k) 
SuppressUnusedWarnings ([k] -> [k] -> TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] [(,,,,,) k k k k k k] -> *) -> *) -> *) -> *) (Zip6Sym2 k k k k k k) 
SuppressUnusedWarnings ([k] -> [k] -> [k] -> TyFun [k] (TyFun [k] (TyFun [k] [(,,,,,) k k k k k k] -> *) -> *) -> *) (Zip6Sym3 k k k k k k) 
SuppressUnusedWarnings ([k] -> [k] -> [k] -> [k] -> TyFun [k] (TyFun [k] [(,,,,,) k k k k k k] -> *) -> *) (Zip6Sym4 k k k k k k) 
SuppressUnusedWarnings ([k] -> [k] -> [k] -> [k] -> [k] -> TyFun [k] [(,,,,,) k k k k k k] -> *) (Zip6Sym5 k k k k k k) 
SuppressUnusedWarnings (k -> TyFun k (TyFun k (TyFun k (TyFun k (TyFun k ((,,,,,) k k k k k k) -> *) -> *) -> *) -> *) -> *) (Tuple6Sym1 k k k k k k) 
SuppressUnusedWarnings (k -> k -> TyFun k (TyFun k (TyFun k (TyFun k ((,,,,,) k k k k k k) -> *) -> *) -> *) -> *) (Tuple6Sym2 k k k k k k) 
SuppressUnusedWarnings (k -> k -> k -> TyFun k (TyFun k (TyFun k ((,,,,,) k k k k k k) -> *) -> *) -> *) (Tuple6Sym3 k k k k k k) 
SuppressUnusedWarnings (k -> k -> k -> k -> TyFun k (TyFun k ((,,,,,) k k k k k k) -> *) -> *) (Tuple6Sym4 k k k k k k) 
SuppressUnusedWarnings (k -> k -> k -> k -> k -> TyFun k ((,,,,,) k k k k k k) -> *) (Tuple6Sym5 k k k k k k) 
SuppressUnusedWarnings (TyFun (TyFun k (TyFun k (TyFun k (TyFun k (TyFun k k -> *) -> *) -> *) -> *) -> *) (TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] [k] -> *) -> *) -> *) -> *) -> *) -> *) (ZipWith5Sym0 k k k k k k) 
SuppressUnusedWarnings (TyFun [(,,,,,) k k k k k k] ((,,,,,) [k] [k] [k] [k] [k] [k]) -> *) (Unzip6Sym0 k k k k k k) 
SuppressUnusedWarnings (TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] [(,,,,,) k k k k k k] -> *) -> *) -> *) -> *) -> *) -> *) (Zip6Sym0 k k k k k k) 
SuppressUnusedWarnings (TyFun k (TyFun k (TyFun k (TyFun k (TyFun k (TyFun k ((,,,,,) k k k k k k) -> *) -> *) -> *) -> *) -> *) -> *) (Tuple6Sym0 k k k k k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k (TyFun k (TyFun k (TyFun k (TyFun k k -> *) -> *) -> *) -> *) -> *) -> *) -> TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] [k] -> *) -> *) -> *) -> *) -> *) -> *) (ZipWith6Sym1 k k k k k k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k (TyFun k (TyFun k (TyFun k (TyFun k k -> *) -> *) -> *) -> *) -> *) -> *) -> [k] -> TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] [k] -> *) -> *) -> *) -> *) -> *) (ZipWith6Sym2 k k k k k k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k (TyFun k (TyFun k (TyFun k (TyFun k k -> *) -> *) -> *) -> *) -> *) -> *) -> [k] -> [k] -> TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] [k] -> *) -> *) -> *) -> *) (ZipWith6Sym3 k k k k k k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k (TyFun k (TyFun k (TyFun k (TyFun k k -> *) -> *) -> *) -> *) -> *) -> *) -> [k] -> [k] -> [k] -> TyFun [k] (TyFun [k] (TyFun [k] [k] -> *) -> *) -> *) (ZipWith6Sym4 k k k k k k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k (TyFun k (TyFun k (TyFun k (TyFun k k -> *) -> *) -> *) -> *) -> *) -> *) -> [k] -> [k] -> [k] -> [k] -> TyFun [k] (TyFun [k] [k] -> *) -> *) (ZipWith6Sym5 k k k k k k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k (TyFun k (TyFun k (TyFun k (TyFun k k -> *) -> *) -> *) -> *) -> *) -> *) -> [k] -> [k] -> [k] -> [k] -> [k] -> TyFun [k] [k] -> *) (ZipWith6Sym6 k k k k k k k) 
SuppressUnusedWarnings ([k] -> TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] [(,,,,,,) k k k k k k k] -> *) -> *) -> *) -> *) -> *) -> *) (Zip7Sym1 k k k k k k k) 
SuppressUnusedWarnings ([k] -> [k] -> TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] [(,,,,,,) k k k k k k k] -> *) -> *) -> *) -> *) -> *) (Zip7Sym2 k k k k k k k) 
SuppressUnusedWarnings ([k] -> [k] -> [k] -> TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] [(,,,,,,) k k k k k k k] -> *) -> *) -> *) -> *) (Zip7Sym3 k k k k k k k) 
SuppressUnusedWarnings ([k] -> [k] -> [k] -> [k] -> TyFun [k] (TyFun [k] (TyFun [k] [(,,,,,,) k k k k k k k] -> *) -> *) -> *) (Zip7Sym4 k k k k k k k) 
SuppressUnusedWarnings ([k] -> [k] -> [k] -> [k] -> [k] -> TyFun [k] (TyFun [k] [(,,,,,,) k k k k k k k] -> *) -> *) (Zip7Sym5 k k k k k k k) 
SuppressUnusedWarnings ([k] -> [k] -> [k] -> [k] -> [k] -> [k] -> TyFun [k] [(,,,,,,) k k k k k k k] -> *) (Zip7Sym6 k k k k k k k) 
SuppressUnusedWarnings (k -> TyFun k (TyFun k (TyFun k (TyFun k (TyFun k (TyFun k ((,,,,,,) k k k k k k k) -> *) -> *) -> *) -> *) -> *) -> *) (Tuple7Sym1 k k k k k k k) 
SuppressUnusedWarnings (k -> k -> TyFun k (TyFun k (TyFun k (TyFun k (TyFun k ((,,,,,,) k k k k k k k) -> *) -> *) -> *) -> *) -> *) (Tuple7Sym2 k k k k k k k) 
SuppressUnusedWarnings (k -> k -> k -> TyFun k (TyFun k (TyFun k (TyFun k ((,,,,,,) k k k k k k k) -> *) -> *) -> *) -> *) (Tuple7Sym3 k k k k k k k) 
SuppressUnusedWarnings (k -> k -> k -> k -> TyFun k (TyFun k (TyFun k ((,,,,,,) k k k k k k k) -> *) -> *) -> *) (Tuple7Sym4 k k k k k k k) 
SuppressUnusedWarnings (k -> k -> k -> k -> k -> TyFun k (TyFun k ((,,,,,,) k k k k k k k) -> *) -> *) (Tuple7Sym5 k k k k k k k) 
SuppressUnusedWarnings (k -> k -> k -> k -> k -> k -> TyFun k ((,,,,,,) k k k k k k k) -> *) (Tuple7Sym6 k k k k k k k) 
SuppressUnusedWarnings (TyFun (TyFun k (TyFun k (TyFun k (TyFun k (TyFun k (TyFun k k -> *) -> *) -> *) -> *) -> *) -> *) (TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] [k] -> *) -> *) -> *) -> *) -> *) -> *) -> *) (ZipWith6Sym0 k k k k k k k) 
SuppressUnusedWarnings (TyFun [(,,,,,,) k k k k k k k] ((,,,,,,) [k] [k] [k] [k] [k] [k] [k]) -> *) (Unzip7Sym0 k k k k k k k) 
SuppressUnusedWarnings (TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] [(,,,,,,) k k k k k k k] -> *) -> *) -> *) -> *) -> *) -> *) -> *) (Zip7Sym0 k k k k k k k) 
SuppressUnusedWarnings (TyFun k (TyFun k (TyFun k (TyFun k (TyFun k (TyFun k (TyFun k ((,,,,,,) k k k k k k k) -> *) -> *) -> *) -> *) -> *) -> *) -> *) (Tuple7Sym0 k k k k k k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k (TyFun k (TyFun k (TyFun k (TyFun k (TyFun k k -> *) -> *) -> *) -> *) -> *) -> *) -> *) -> TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] [k] -> *) -> *) -> *) -> *) -> *) -> *) -> *) (ZipWith7Sym1 k k k k k k k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k (TyFun k (TyFun k (TyFun k (TyFun k (TyFun k k -> *) -> *) -> *) -> *) -> *) -> *) -> *) -> [k] -> TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] [k] -> *) -> *) -> *) -> *) -> *) -> *) (ZipWith7Sym2 k k k k k k k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k (TyFun k (TyFun k (TyFun k (TyFun k (TyFun k k -> *) -> *) -> *) -> *) -> *) -> *) -> *) -> [k] -> [k] -> TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] [k] -> *) -> *) -> *) -> *) -> *) (ZipWith7Sym3 k k k k k k k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k (TyFun k (TyFun k (TyFun k (TyFun k (TyFun k k -> *) -> *) -> *) -> *) -> *) -> *) -> *) -> [k] -> [k] -> [k] -> TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] [k] -> *) -> *) -> *) -> *) (ZipWith7Sym4 k k k k k k k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k (TyFun k (TyFun k (TyFun k (TyFun k (TyFun k k -> *) -> *) -> *) -> *) -> *) -> *) -> *) -> [k] -> [k] -> [k] -> [k] -> TyFun [k] (TyFun [k] (TyFun [k] [k] -> *) -> *) -> *) (ZipWith7Sym5 k k k k k k k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k (TyFun k (TyFun k (TyFun k (TyFun k (TyFun k k -> *) -> *) -> *) -> *) -> *) -> *) -> *) -> [k] -> [k] -> [k] -> [k] -> [k] -> TyFun [k] (TyFun [k] [k] -> *) -> *) (ZipWith7Sym6 k k k k k k k k) 
SuppressUnusedWarnings ((TyFun k (TyFun k (TyFun k (TyFun k (TyFun k (TyFun k (TyFun k k -> *) -> *) -> *) -> *) -> *) -> *) -> *) -> [k] -> [k] -> [k] -> [k] -> [k] -> [k] -> TyFun [k] [k] -> *) (ZipWith7Sym7 k k k k k k k k) 
SuppressUnusedWarnings (TyFun (TyFun k (TyFun k (TyFun k (TyFun k (TyFun k (TyFun k (TyFun k k -> *) -> *) -> *) -> *) -> *) -> *) -> *) (TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] (TyFun [k] [k] -> *) -> *) -> *) -> *) -> *) -> *) -> *) -> *) (ZipWith7Sym0 k k k k k k k k) 
data Sing (TyFun k1 k2 -> *) = SLambda {} 
type Apply (TyFun Bool Bool -> *) Bool (:&&$) l0 = (:&&$$) l0 
type Apply (TyFun Bool Bool -> *) Bool (:||$) l0 = (:||$$) l0 
type Apply (TyFun Ordering Ordering -> *) Ordering ThenCmpSym0 l0 = ThenCmpSym1 l0 
type Apply (TyFun Nat Nat -> *) Nat (:^$) l0 = (:^$$) l0 
type Apply (TyFun Nat Nat -> *) Nat (:*$) l0 = (:*$$) l0 
type Apply (TyFun Nat Nat -> *) Nat (:-$) l0 = (:-$$) l0 
type Apply (TyFun Nat Nat -> *) Nat (:+$) l0 = (:+$$) l0 
type Apply (TyFun [k] [k] -> *) k ((:$) k) l0 = (:$$) k l0 
type Apply (TyFun [k] [k] -> *) k (IntersperseSym0 k) l0 = IntersperseSym1 k l0 
type Apply (TyFun [k] Bool -> *) k (ElemSym0 k) l0 = ElemSym1 k l0 
type Apply (TyFun [k] Bool -> *) k (NotElemSym0 k) l0 = NotElemSym1 k l0 
type Apply (TyFun [k] [k] -> *) k (DeleteSym0 k) l0 = DeleteSym1 k l0 
type Apply (TyFun [k] (Maybe Nat) -> *) k (ElemIndexSym0 k) l0 = ElemIndexSym1 k l0 
type Apply (TyFun [k] [Nat] -> *) k (ElemIndicesSym0 k) l0 = ElemIndicesSym1 k l0 
type Apply (TyFun [k] ((,) [k] [k]) -> *) Nat (SplitAtSym0 k) l0 = SplitAtSym1 k l0 
type Apply (TyFun [k] [k] -> *) Nat (TakeSym0 k) l0 = TakeSym1 k l0 
type Apply (TyFun [k] [k] -> *) Nat (DropSym0 k) l0 = DropSym1 k l0 
type Apply (TyFun [k] [k] -> *) k (InsertSym0 k) l0 = InsertSym1 k l0 
type Apply (TyFun k (TyFun Bool k -> *) -> *) k (Bool_Sym0 k) l0 = Bool_Sym1 k l0 
type Apply (TyFun k Bool -> *) k ((:/=$) k) l0 = (:/=$$) k l0 
type Apply (TyFun k Bool -> *) k ((:==$) k) l0 = (:==$$) k l0 
type Apply (TyFun k k -> *) k (MinSym0 k) l0 = MinSym1 k l0 
type Apply (TyFun k k -> *) k (MaxSym0 k) l0 = MaxSym1 k l0 
type Apply (TyFun k Bool -> *) k ((:<=$) k) l0 = (:<=$$) k l0 
type Apply (TyFun k Bool -> *) k ((:>$) k) l0 = (:>$$) k l0 
type Apply (TyFun k Bool -> *) k ((:>=$) k) l0 = (:>=$$) k l0 
type Apply (TyFun k Bool -> *) k ((:<$) k) l0 = (:<$$) k l0 
type Apply (TyFun k Ordering -> *) k (CompareSym0 k) l0 = CompareSym1 k l0 
type Apply (TyFun k k -> *) k (AsTypeOfSym0 k) l0 = AsTypeOfSym1 k l0 
type Apply (TyFun k [k] -> *) Nat (ReplicateSym0 k) l0 = ReplicateSym1 k l0 
type Apply (TyFun (Maybe k) k -> *) k (FromMaybeSym0 k) l0 = FromMaybeSym1 k l0 
type Apply (TyFun Bool k -> *) k (Bool_Sym1 k l1) l0 = Bool_Sym2 k l1 l0 
type Apply (TyFun (TyFun k1 k -> *) (TyFun (Maybe k1) k -> *) -> *) k (Maybe_Sym0 k k1) l0 = Maybe_Sym1 k k1 l0 
type Apply (TyFun [(,) k k1] (Maybe k1) -> *) k (LookupSym0 k k1) l0 = LookupSym1 k k1 l0 
type Apply (TyFun [k] [k] -> *) k (DeleteBySym1 k l1) l0 = DeleteBySym2 k l1 l0 
type Apply (TyFun [k] [k] -> *) k (InsertBySym1 k l1) l0 = InsertBySym2 k l1 l0 
type Apply (TyFun [k1] [k1] -> *) k (GenericTakeSym0 k k1) l0 = GenericTakeSym1 k k1 l0 
type Apply (TyFun [k1] ((,) [k1] [k1]) -> *) k (GenericSplitAtSym0 k k1) l0 = GenericSplitAtSym1 k k1 l0 
type Apply (TyFun [k1] [k1] -> *) k (GenericDropSym0 k k1) l0 = GenericDropSym1 k k1 l0 
type Apply (TyFun k1 ((,) k k1) -> *) k (Tuple2Sym0 k k1) l0 = Tuple2Sym1 k k1 l0 
type Apply (TyFun k1 k -> *) k (ConstSym0 k k1) l0 = ConstSym1 k k1 l0 
type Apply (TyFun k1 k1 -> *) k (SeqSym0 k k1) l0 = SeqSym1 k k1 l0 
type Apply (TyFun k1 [k1] -> *) k (GenericReplicateSym0 k k1) l0 = GenericReplicateSym1 k k1 l0 
type Apply (TyFun [k1] k -> *) k (FoldrSym1 k1 k l1) l0 = FoldrSym2 k1 k l1 l0 
type Apply (TyFun [k1] k -> *) k (FoldlSym1 k k1 l1) l0 = FoldlSym2 k k1 l1 l0 
type Apply (TyFun [k1] k -> *) k (Foldl'Sym1 k k1 l1) l0 = Foldl'Sym2 k k1 l1 l0 
type Apply (TyFun [k1] [k] -> *) k (ScanlSym1 k k1 l1) l0 = ScanlSym2 k k1 l1 l0 
type Apply (TyFun [k1] [k] -> *) k (ScanrSym1 k1 k l1) l0 = ScanrSym2 k1 k l1 l0 
type Apply (TyFun k1 (TyFun k2 ((,,) k k1 k2) -> *) -> *) k (Tuple3Sym0 k k1 k2) l0 = Tuple3Sym1 k k1 k2 l0 
type Apply (TyFun [k1] ((,) k [k2]) -> *) k (MapAccumLSym1 k k1 k2 l1) l0 = MapAccumLSym2 k k1 k2 l1 l0 
type Apply (TyFun [k1] ((,) k [k2]) -> *) k (MapAccumRSym1 k k1 k2 l1) l0 = MapAccumRSym2 k k1 k2 l1 l0 
type Apply (TyFun k1 k2 -> *) k (TyCon2 k k1 k2 f) x = TyCon1 k1 k2 (f x) 
type Apply (TyFun k1 (TyFun k2 (TyFun k3 ((,,,) k k1 k2 k3) -> *) -> *) -> *) k (Tuple4Sym0 k k1 k2 k3) l0 = Tuple4Sym1 k k1 k2 k3 l0 
type Apply (TyFun k1 ((,,) k2 k k1) -> *) k (Tuple3Sym1 k2 k k1 l1) l0 = Tuple3Sym2 k2 k k1 l1 l0 
type Apply (TyFun k1 k2 -> *) k (FlipSym1 k1 k k2 l1) l0 = FlipSym2 k1 k k2 l1 l0 
type Apply (TyFun k1 k2 -> *) k (CurrySym1 k k1 k2 l1) l0 = CurrySym2 k k1 k2 l1 l0 
type Apply (TyFun k1 (TyFun k2 k3 -> *) -> *) k (TyCon3 k k1 k2 k3 f) x = TyCon2 k1 k2 k3 (f x) 
type Apply (TyFun k1 (TyFun k2 (TyFun k3 (TyFun k4 ((,,,,) k k1 k2 k3 k4) -> *) -> *) -> *) -> *) k (Tuple5Sym0 k k1 k2 k3 k4) l0 = Tuple5Sym1 k k1 k2 k3 k4 l0 
type Apply (TyFun k1 (TyFun k2 ((,,,) k3 k k1 k2) -> *) -> *) k (Tuple4Sym1 k3 k k1 k2 l1) l0 = Tuple4Sym2 k3 k k1 k2 l1 l0 
type Apply (TyFun k1 (TyFun k2 (TyFun k3 k4 -> *) -> *) -> *) k (TyCon4 k k1 k2 k3 k4 f) x = TyCon3 k1 k2 k3 k4 (f x) 
type Apply (TyFun k1 (TyFun k2 (TyFun k3 (TyFun k4 (TyFun k5 ((,,,,,) k k1 k2 k3 k4 k5) -> *) -> *) -> *) -> *) -> *) k (Tuple6Sym0 k k1 k2 k3 k4 k5) l0 = Tuple6Sym1 k k1 k2 k3 k4 k5 l0 
type Apply (TyFun k1 (TyFun k2 (TyFun k3 ((,,,,) k4 k k1 k2 k3) -> *) -> *) -> *) k (Tuple5Sym1 k4 k k1 k2 k3 l1) l0 = Tuple5Sym2 k4 k k1 k2 k3 l1 l0 
type Apply (TyFun k1 ((,,,) k2 k3 k k1) -> *) k (Tuple4Sym2 k2 k3 k k1 l1 l2) l0 = Tuple4Sym3 k2 k3 k k1 l1 l2 l0 
type Apply (TyFun k1 (TyFun k2 (TyFun k3 (TyFun k4 k5 -> *) -> *) -> *) -> *) k (TyCon5 k k1 k2 k3 k4 k5 f) x = TyCon4 k1 k2 k3 k4 k5 (f x) 
type Apply (TyFun k1 (TyFun k2 (TyFun k3 (TyFun k4 (TyFun k5 (TyFun k6 ((,,,,,,) k k1 k2 k3 k4 k5 k6) -> *) -> *) -> *) -> *) -> *) -> *) k (Tuple7Sym0 k k1 k2 k3 k4 k5 k6) l0 = Tuple7Sym1 k k1 k2 k3 k4 k5 k6 l0 
type Apply (TyFun k1 (TyFun k2 (TyFun k3 (TyFun k4 ((,,,,,) k5 k k1 k2 k3 k4) -> *) -> *) -> *) -> *) k (Tuple6Sym1 k5 k k1 k2 k3 k4 l1) l0 = Tuple6Sym2 k5 k k1 k2 k3 k4 l1 l0 
type Apply (TyFun k1 (TyFun k2 ((,,,,) k3 k4 k k1 k2) -> *) -> *) k (Tuple5Sym2 k3 k4 k k1 k2 l1 l2) l0 = Tuple5Sym3 k3 k4 k k1 k2 l1 l2 l0 
type Apply (TyFun k1 (TyFun k2 (TyFun k3 (TyFun k4 (TyFun k5 k6 -> *) -> *) -> *) -> *) -> *) k (TyCon6 k k1 k2 k3 k4 k5 k6 f) x = TyCon5 k1 k2 k3 k4 k5 k6 (f x) 
type Apply (TyFun k1 (TyFun k2 (TyFun k3 (TyFun k4 (TyFun k5 ((,,,,,,) k6 k k1 k2 k3 k4 k5) -> *) -> *) -> *) -> *) -> *) k (Tuple7Sym1 k6 k k1 k2 k3 k4 k5 l1) l0 = Tuple7Sym2 k6 k k1 k2 k3 k4 k5 l1 l0 
type Apply (TyFun k1 (TyFun k2 (TyFun k3 ((,,,,,) k4 k5 k k1 k2 k3) -> *) -> *) -> *) k (Tuple6Sym2 k4 k5 k k1 k2 k3 l1 l2) l0 = Tuple6Sym3 k4 k5 k k1 k2 k3 l1 l2 l0 
type Apply (TyFun k1 ((,,,,) k2 k3 k4 k k1) -> *) k (Tuple5Sym3 k2 k3 k4 k k1 l1 l2 l3) l0 = Tuple5Sym4 k2 k3 k4 k k1 l1 l2 l3 l0 
type Apply (TyFun k1 (TyFun k2 (TyFun k3 (TyFun k4 (TyFun k5 (TyFun k6 k7 -> *) -> *) -> *) -> *) -> *) -> *) k (TyCon7 k k1 k2 k3 k4 k5 k6 k7 f) x = TyCon6 k1 k2 k3 k4 k5 k6 k7 (f x) 
type Apply (TyFun k1 (TyFun k2 (TyFun k3 (TyFun k4 ((,,,,,,) k5 k6 k k1 k2 k3 k4) -> *) -> *) -> *) -> *) k (Tuple7Sym2 k5 k6 k k1 k2 k3 k4 l1 l2) l0 = Tuple7Sym3 k5 k6 k k1 k2 k3 k4 l1 l2 l0 
type Apply (TyFun k1 (TyFun k2 ((,,,,,) k3 k4 k5 k k1 k2) -> *) -> *) k (Tuple6Sym3 k3 k4 k5 k k1 k2 l1 l2 l3) l0 = Tuple6Sym4 k3 k4 k5 k k1 k2 l1 l2 l3 l0 
type Apply (TyFun k1 (TyFun k2 (TyFun k3 ((,,,,,,) k4 k5 k6 k k1 k2 k3) -> *) -> *) -> *) k (Tuple7Sym3 k4 k5 k6 k k1 k2 k3 l1 l2 l3) l0 = Tuple7Sym4 k4 k5 k6 k k1 k2 k3 l1 l2 l3 l0 
type Apply (TyFun k1 ((,,,,,) k2 k3 k4 k5 k k1) -> *) k (Tuple6Sym4 k2 k3 k4 k5 k k1 l1 l2 l3 l4) l0 = Tuple6Sym5 k2 k3 k4 k5 k k1 l1 l2 l3 l4 l0 
type Apply (TyFun k1 (TyFun k2 ((,,,,,,) k3 k4 k5 k6 k k1 k2) -> *) -> *) k (Tuple7Sym4 k3 k4 k5 k6 k k1 k2 l1 l2 l3 l4) l0 = Tuple7Sym5 k3 k4 k5 k6 k k1 k2 l1 l2 l3 l4 l0 
type Apply (TyFun k1 ((,,,,,,) k2 k3 k4 k5 k6 k k1) -> *) k (Tuple7Sym5 k2 k3 k4 k5 k6 k k1 l1 l2 l3 l4 l5) l0 = Tuple7Sym6 k2 k3 k4 k5 k6 k k1 l1 l2 l3 l4 l5 l0 
type DemoteRep (TyFun k1 k2 -> *) (KProxy (TyFun k1 k2 -> *)) = DemoteRep k1 (KProxy k1) -> DemoteRep k2 (KProxy k2) 
type Apply (TyFun [[k]] [k] -> *) [k] (IntercalateSym0 k) l0 = IntercalateSym1 k l0 
type Apply (TyFun [k] [k] -> *) [k] ((:++$) k) l0 = (:++$$) k l0 
type Apply (TyFun [k] Bool -> *) [k] (IsSuffixOfSym0 k) l0 = IsSuffixOfSym1 k l0 
type Apply (TyFun [k] [k] -> *) [k] ((:\\$) k) l0 = (:\\$$) k l0 
type Apply (TyFun [k] Bool -> *) [k] (IsInfixOfSym0 k) l0 = IsInfixOfSym1 k l0 
type Apply (TyFun [k] Bool -> *) [k] (IsPrefixOfSym0 k) l0 = IsPrefixOfSym1 k l0 
type Apply (TyFun [k] (Maybe [k]) -> *) [k] (StripPrefixSym0 k) l0 = StripPrefixSym1 k l0 
type Apply (TyFun [k] [k] -> *) [k] (IntersectSym0 k) l0 = IntersectSym1 k l0 
type Apply (TyFun [k] [k] -> *) [k] (UnionSym0 k) l0 = UnionSym1 k l0 
type Apply (TyFun Nat k -> *) [k] ((:!!$) k) l0 = (:!!$$) k l0 
type Apply (TyFun [k] [k] -> *) [k] (DeleteFirstsBySym1 k l1) l0 = DeleteFirstsBySym2 k l1 l0 
type Apply (TyFun [k1] [(,) k k1] -> *) [k] (ZipSym0 k k1) l0 = ZipSym1 k k1 l0 
type Apply (TyFun [k] [k] -> *) [k] (IntersectBySym1 k l1) l0 = IntersectBySym2 k l1 l0 
type Apply (TyFun [k] [k] -> *) [k] (UnionBySym1 k l1) l0 = UnionBySym2 k l1 l0 
type Apply (TyFun k1 k -> *) [k] (GenericIndexSym0 k k1) l0 = GenericIndexSym1 k k1 l0 
type Apply (TyFun [k1] (TyFun [k2] [(,,) k k1 k2] -> *) -> *) [k] (Zip3Sym0 k k1 k2) l0 = Zip3Sym1 k k1 k2 l0 
type Apply (TyFun [k1] [(,,) k2 k k1] -> *) [k] (Zip3Sym1 k2 k k1 l1) l0 = Zip3Sym2 k2 k k1 l1 l0 
type Apply (TyFun [k1] [k2] -> *) [k] (ZipWithSym1 k k1 k2 l1) l0 = ZipWithSym2 k k1 k2 l1 l0 
type Apply (TyFun [k1] (TyFun [k2] (TyFun [k3] [(,,,) k k1 k2 k3] -> *) -> *) -> *) [k] (Zip4Sym0 k k1 k2 k3) l0 = Zip4Sym1 k k1 k2 k3 l0 
type Apply (TyFun [k1] (TyFun [k2] [k3] -> *) -> *) [k] (ZipWith3Sym1 k k1 k2 k3 l1) l0 = ZipWith3Sym2 k k1 k2 k3 l1 l0 
type Apply (TyFun [k1] (TyFun [k2] [(,,,) k3 k k1 k2] -> *) -> *) [k] (Zip4Sym1 k3 k k1 k2 l1) l0 = Zip4Sym2 k3 k k1 k2 l1 l0 
type Apply (TyFun [k1] (TyFun [k2] (TyFun [k3] (TyFun [k4] [(,,,,) k k1 k2 k3 k4] -> *) -> *) -> *) -> *) [k] (Zip5Sym0 k k1 k2 k3 k4) l0 = Zip5Sym1 k k1 k2 k3 k4 l0 
type Apply (TyFun [k2] [k3] -> *) [k1] (ZipWith3Sym2 k k1 k2 k3 l1 l2) l0 = ZipWith3Sym3 k k1 k2 k3 l1 l2 l0 
type Apply (TyFun [k1] [(,,,) k2 k3 k k1] -> *) [k] (Zip4Sym2 k2 k3 k k1 l1 l2) l0 = Zip4Sym3 k2 k3 k k1 l1 l2 l0 
type Apply (TyFun [k1] (TyFun [k2] (TyFun [k3] [(,,,,) k4 k k1 k2 k3] -> *) -> *) -> *) [k] (Zip5Sym1 k4 k k1 k2 k3 l1) l0 = Zip5Sym2 k4 k k1 k2 k3 l1 l0 
type Apply (TyFun [k1] (TyFun [k2] (TyFun [k3] (TyFun [k4] (TyFun [k5] [(,,,,,) k k1 k2 k3 k4 k5] -> *) -> *) -> *) -> *) -> *) [k] (Zip6Sym0 k k1 k2 k3 k4 k5) l0 = Zip6Sym1 k k1 k2 k3 k4 k5 l0 
type Apply (TyFun [k1] (TyFun [k2] (TyFun [k3] [k4] -> *) -> *) -> *) [k] (ZipWith4Sym1 k k1 k2 k3 k4 l1) l0 = ZipWith4Sym2 k k1 k2 k3 k4 l1 l0 
type Apply (TyFun [k1] (TyFun [k2] [(,,,,) k3 k4 k k1 k2] -> *) -> *) [k] (Zip5Sym2 k3 k4 k k1 k2 l1 l2) l0 = Zip5Sym3 k3 k4 k k1 k2 l1 l2 l0 
type Apply (TyFun [k1] (TyFun [k2] (TyFun [k3] (TyFun [k4] [(,,,,,) k5 k k1 k2 k3 k4] -> *) -> *) -> *) -> *) [k] (Zip6Sym1 k5 k k1 k2 k3 k4 l1) l0 = Zip6Sym2 k5 k k1 k2 k3 k4 l1 l0 
type Apply (TyFun [k1] (TyFun [k2] (TyFun [k3] (TyFun [k4] (TyFun [k5] (TyFun [k6] [(,,,,,,) k k1 k2 k3 k4 k5 k6] -> *) -> *) -> *) -> *) -> *) -> *) [k] (Zip7Sym0 k k1 k2 k3 k4 k5 k6) l0 = Zip7Sym1 k k1 k2 k3 k4 k5 k6 l0 
type Apply (TyFun [k2] (TyFun [k3] [k4] -> *) -> *) [k1] (ZipWith4Sym2 k k1 k2 k3 k4 l1 l2) l0 = ZipWith4Sym3 k k1 k2 k3 k4 l1 l2 l0 
type Apply (TyFun [k1] (TyFun [k2] (TyFun [k3] (TyFun [k4] [k5] -> *) -> *) -> *) -> *) [k] (ZipWith5Sym1 k k1 k2 k3 k4 k5 l1) l0 = ZipWith5Sym2 k k1 k2 k3 k4 k5 l1 l0 
type Apply (TyFun [k1] [(,,,,) k2 k3 k4 k k1] -> *) [k] (Zip5Sym3 k2 k3 k4 k k1 l1 l2 l3) l0 = Zip5Sym4 k2 k3 k4 k k1 l1 l2 l3 l0 
type Apply (TyFun [k1] (TyFun [k2] (TyFun [k3] [(,,,,,) k4 k5 k k1 k2 k3] -> *) -> *) -> *) [k] (Zip6Sym2 k4 k5 k k1 k2 k3 l1 l2) l0 = Zip6Sym3 k4 k5 k k1 k2 k3 l1 l2 l0 
type Apply (TyFun [k1] (TyFun [k2] (TyFun [k3] (TyFun [k4] (TyFun [k5] [(,,,,,,) k6 k k1 k2 k3 k4 k5] -> *) -> *) -> *) -> *) -> *) [k] (Zip7Sym1 k6 k k1 k2 k3 k4 k5 l1) l0 = Zip7Sym2 k6 k k1 k2 k3 k4 k5 l1 l0 
type Apply (TyFun [k3] [k4] -> *) [k2] (ZipWith4Sym3 k k1 k2 k3 k4 l1 l2 l3) l0 = ZipWith4Sym4 k k1 k2 k3 k4 l1 l2 l3 l0 
type Apply (TyFun [k2] (TyFun [k3] (TyFun [k4] [k5] -> *) -> *) -> *) [k1] (ZipWith5Sym2 k k1 k2 k3 k4 k5 l1 l2) l0 = ZipWith5Sym3 k k1 k2 k3 k4 k5 l1 l2 l0 
type Apply (TyFun [k1] (TyFun [k2] (TyFun [k3] (TyFun [k4] (TyFun [k5] [k6] -> *) -> *) -> *) -> *) -> *) [k] (ZipWith6Sym1 k k1 k2 k3 k4 k5 k6 l1) l0 = ZipWith6Sym2 k k1 k2 k3 k4 k5 k6 l1 l0 
type Apply (TyFun [k1] (TyFun [k2] [(,,,,,) k3 k4 k5 k k1 k2] -> *) -> *) [k] (Zip6Sym3 k3 k4 k5 k k1 k2 l1 l2 l3) l0 = Zip6Sym4 k3 k4 k5 k k1 k2 l1 l2 l3 l0 
type Apply (TyFun [k1] (TyFun [k2] (TyFun [k3] (TyFun [k4] [(,,,,,,) k5 k6 k k1 k2 k3 k4] -> *) -> *) -> *) -> *) [k] (Zip7Sym2 k5 k6 k k1 k2 k3 k4 l1 l2) l0 = Zip7Sym3 k5 k6 k k1 k2 k3 k4 l1 l2 l0 
type Apply (TyFun [k3] (TyFun [k4] [k5] -> *) -> *) [k2] (ZipWith5Sym3 k k1 k2 k3 k4 k5 l1 l2 l3) l0 = ZipWith5Sym4 k k1 k2 k3 k4 k5 l1 l2 l3 l0 
type Apply (TyFun [k2] (TyFun [k3] (TyFun [k4] (TyFun [k5] [k6] -> *) -> *) -> *) -> *) [k1] (ZipWith6Sym2 k k1 k2 k3 k4 k5 k6 l1 l2) l0 = ZipWith6Sym3 k k1 k2 k3 k4 k5 k6 l1 l2 l0 
type Apply (TyFun [k1] (TyFun [k2] (TyFun [k3] (TyFun [k4] (TyFun [k5] (TyFun [k6] [k7] -> *) -> *) -> *) -> *) -> *) -> *) [k] (ZipWith7Sym1 k k1 k2 k3 k4 k5 k6 k7 l1) l0 = ZipWith7Sym2 k k1 k2 k3 k4 k5 k6 k7 l1 l0 
type Apply (TyFun [k1] [(,,,,,) k2 k3 k4 k5 k k1] -> *) [k] (Zip6Sym4 k2 k3 k4 k5 k k1 l1 l2 l3 l4) l0 = Zip6Sym5 k2 k3 k4 k5 k k1 l1 l2 l3 l4 l0 
type Apply (TyFun [k1] (TyFun [k2] (TyFun [k3] [(,,,,,,) k4 k5 k6 k k1 k2 k3] -> *) -> *) -> *) [k] (Zip7Sym3 k4 k5 k6 k k1 k2 k3 l1 l2 l3) l0 = Zip7Sym4 k4 k5 k6 k k1 k2 k3 l1 l2 l3 l0 
type Apply (TyFun [k4] [k5] -> *) [k3] (ZipWith5Sym4 k k1 k2 k3 k4 k5 l1 l2 l3 l4) l0 = ZipWith5Sym5 k k1 k2 k3 k4 k5 l1 l2 l3 l4 l0 
type Apply (TyFun [k3] (TyFun [k4] (TyFun [k5] [k6] -> *) -> *) -> *) [k2] (ZipWith6Sym3 k k1 k2 k3 k4 k5 k6 l1 l2 l3) l0 = ZipWith6Sym4 k k1 k2 k3 k4 k5 k6 l1 l2 l3 l0 
type Apply (TyFun [k2] (TyFun [k3] (TyFun [k4] (TyFun [k5] (TyFun [k6] [k7] -> *) -> *) -> *) -> *) -> *) [k1] (ZipWith7Sym2 k k1 k2 k3 k4 k5 k6 k7 l1 l2) l0 = ZipWith7Sym3 k k1 k2 k3 k4 k5 k6 k7 l1 l2 l0 
type Apply (TyFun [k1] (TyFun [k2] [(,,,,,,) k3 k4 k5 k6 k k1 k2] -> *) -> *) [k] (Zip7Sym4 k3 k4 k5 k6 k k1 k2 l1 l2 l3 l4) l0 = Zip7Sym5 k3 k4 k5 k6 k k1 k2 l1 l2 l3 l4 l0 
type Apply (TyFun [k4] (TyFun [k5] [k6] -> *) -> *) [k3] (ZipWith6Sym4 k k1 k2 k3 k4 k5 k6 l1 l2 l3 l4) l0 = ZipWith6Sym5 k k1 k2 k3 k4 k5 k6 l1 l2 l3 l4 l0 
type Apply (TyFun [k3] (TyFun [k4] (TyFun [k5] (TyFun [k6] [k7] -> *) -> *) -> *) -> *) [k2] (ZipWith7Sym3 k k1 k2 k3 k4 k5 k6 k7 l1 l2 l3) l0 = ZipWith7Sym4 k k1 k2 k3 k4 k5 k6 k7 l1 l2 l3 l0 
type Apply (TyFun [k1] [(,,,,,,) k2 k3 k4 k5 k6 k k1] -> *) [k] (Zip7Sym5 k2 k3 k4 k5 k6 k k1 l1 l2 l3 l4 l5) l0 = Zip7Sym6 k2 k3 k4 k5 k6 k k1 l1 l2 l3 l4 l5 l0 
type Apply (TyFun [k5] [k6] -> *) [k4] (ZipWith6Sym5 k k1 k2 k3 k4 k5 k6 l1 l2 l3 l4 l5) l0 = ZipWith6Sym6 k k1 k2 k3 k4 k5 k6 l1 l2 l3 l4 l5 l0 
type Apply (TyFun [k4] (TyFun [k5] (TyFun [k6] [k7] -> *) -> *) -> *) [k3] (ZipWith7Sym4 k k1 k2 k3 k4 k5 k6 k7 l1 l2 l3 l4) l0 = ZipWith7Sym5 k k1 k2 k3 k4 k5 k6 k7 l1 l2 l3 l4 l0 
type Apply (TyFun [k5] (TyFun [k6] [k7] -> *) -> *) [k4] (ZipWith7Sym5 k k1 k2 k3 k4 k5 k6 k7 l1 l2 l3 l4 l5) l0 = ZipWith7Sym6 k k1 k2 k3 k4 k5 k6 k7 l1 l2 l3 l4 l5 l0 
type Apply (TyFun [k6] [k7] -> *) [k5] (ZipWith7Sym6 k k1 k2 k3 k4 k5 k6 k7 l1 l2 l3 l4 l5 l6) l0 = ZipWith7Sym7 k k1 k2 k3 k4 k5 k6 k7 l1 l2 l3 l4 l5 l6 l0 
type Apply (TyFun (TyFun k k -> *) (TyFun k k -> *) -> *) (TyFun k Bool -> *) (UntilSym0 k) l0 = UntilSym1 k l0 
type Apply (TyFun [k] Bool -> *) (TyFun k Bool -> *) (Any_Sym0 k) l0 = Any_Sym1 k l0 
type Apply (TyFun [k] (TyFun [k] [k] -> *) -> *) (TyFun k (TyFun k Bool -> *) -> *) (DeleteFirstsBySym0 k) l0 = DeleteFirstsBySym1 k l0 
type Apply (TyFun [k] k -> *) (TyFun k (TyFun k Ordering -> *) -> *) (MinimumBySym0 k) l0 = MinimumBySym1 k l0 
type Apply (TyFun [k] k -> *) (TyFun k (TyFun k Ordering -> *) -> *) (MaximumBySym0 k) l0 = MaximumBySym1 k l0 
type Apply (TyFun [k] k -> *) (TyFun k (TyFun k k -> *) -> *) (Foldl1Sym0 k) l0 = Foldl1Sym1 k l0 
type Apply (TyFun [k] k -> *) (TyFun k (TyFun k k -> *) -> *) (Foldl1'Sym0 k) l0 = Foldl1'Sym1 k l0 
type Apply (TyFun [k] k -> *) (TyFun k (TyFun k k -> *) -> *) (Foldr1Sym0 k) l0 = Foldr1Sym1 k l0 
type Apply (TyFun [k] Bool -> *) (TyFun k Bool -> *) (AllSym0 k) l0 = AllSym1 k l0 
type Apply (TyFun [k] [k] -> *) (TyFun k (TyFun k k -> *) -> *) (Scanl1Sym0 k) l0 = Scanl1Sym1 k l0 
type Apply (TyFun [k] [k] -> *) (TyFun k (TyFun k k -> *) -> *) (Scanr1Sym0 k) l0 = Scanr1Sym1 k l0 
type Apply (TyFun [k] [k] -> *) (TyFun k (TyFun k Ordering -> *) -> *) (SortBySym0 k) l0 = SortBySym1 k l0 
type Apply (TyFun [k] (Maybe Nat) -> *) (TyFun k Bool -> *) (FindIndexSym0 k) l0 = FindIndexSym1 k l0 
type Apply (TyFun [k] [Nat] -> *) (TyFun k Bool -> *) (FindIndicesSym0 k) l0 = FindIndicesSym1 k l0 
type Apply (TyFun [k] [k] -> *) (TyFun k Bool -> *) (TakeWhileSym0 k) l0 = TakeWhileSym1 k l0 
type Apply (TyFun [k] [k] -> *) (TyFun k Bool -> *) (DropWhileSym0 k) l0 = DropWhileSym1 k l0 
type Apply (TyFun [k] [k] -> *) (TyFun k Bool -> *) (DropWhileEndSym0 k) l0 = DropWhileEndSym1 k l0 
type Apply (TyFun [k] [[k]] -> *) (TyFun k (TyFun k Bool -> *) -> *) (GroupBySym0 k) l0 = GroupBySym1 k l0 
type Apply (TyFun [k] ((,) [k] [k]) -> *) (TyFun k Bool -> *) (SpanSym0 k) l0 = SpanSym1 k l0 
type Apply (TyFun [k] ((,) [k] [k]) -> *) (TyFun k Bool -> *) (BreakSym0 k) l0 = BreakSym1 k l0 
type Apply (TyFun [k] (Maybe k) -> *) (TyFun k Bool -> *) (FindSym0 k) l0 = FindSym1 k l0 
type Apply (TyFun [k] (TyFun [k] [k] -> *) -> *) (TyFun k (TyFun k Bool -> *) -> *) (IntersectBySym0 k) l0 = IntersectBySym1 k l0 
type Apply (TyFun [k] [k] -> *) (TyFun k Bool -> *) (FilterSym0 k) l0 = FilterSym1 k l0 
type Apply (TyFun [k] ((,) [k] [k]) -> *) (TyFun k Bool -> *) (PartitionSym0 k) l0 = PartitionSym1 k l0 
type Apply (TyFun [k] (TyFun [k] [k] -> *) -> *) (TyFun k (TyFun k Bool -> *) -> *) (UnionBySym0 k) l0 = UnionBySym1 k l0 
type Apply (TyFun [k] [k] -> *) (TyFun k (TyFun k Bool -> *) -> *) (NubBySym0 k) l0 = NubBySym1 k l0 
type Apply (TyFun k (TyFun [k] [k] -> *) -> *) (TyFun k (TyFun k Bool -> *) -> *) (DeleteBySym0 k) l0 = DeleteBySym1 k l0 
type Apply (TyFun k (TyFun [k] [k] -> *) -> *) (TyFun k (TyFun k Ordering -> *) -> *) (InsertBySym0 k) l0 = InsertBySym1 k l0 
type Apply (TyFun [k] [k1] -> *) (TyFun k k1 -> *) (MapSym0 k k1) l0 = MapSym1 k k1 l0 
type Apply (TyFun [k] [k1] -> *) (TyFun k [k1] -> *) (ConcatMapSym0 k k1) l0 = ConcatMapSym1 k k1 l0 
type Apply (TyFun [k] [k1] -> *) (TyFun k (Maybe k1) -> *) (MapMaybeSym0 k k1) l0 = MapMaybeSym1 k k1 l0 
type Apply (TyFun k k1 -> *) (TyFun k k1 -> *) (($!$) k k1) arg = ($!$$) k k1 arg 
type Apply (TyFun k k1 -> *) (TyFun k k1 -> *) (($$) k k1) arg = ($$$) k k1 arg 
type Apply (TyFun k1 (TyFun [k] k1 -> *) -> *) (TyFun k (TyFun k1 k1 -> *) -> *) (FoldrSym0 k k1) l0 = FoldrSym1 k k1 l0 
type Apply (TyFun k k -> *) (TyFun k k -> *) (UntilSym1 k l1) l0 = UntilSym2 k l1 l0 
type Apply (TyFun k (TyFun [k1] k -> *) -> *) (TyFun k (TyFun k1 k -> *) -> *) (FoldlSym0 k k1) l0 = FoldlSym1 k k1 l0 
type Apply (TyFun k (TyFun [k1] k -> *) -> *) (TyFun k (TyFun k1 k -> *) -> *) (Foldl'Sym0 k k1) l0 = Foldl'Sym1 k k1 l0 
type Apply (TyFun k (TyFun [k1] [k] -> *) -> *) (TyFun k (TyFun k1 k -> *) -> *) (ScanlSym0 k k1) l0 = ScanlSym1 k k1 l0 
type Apply (TyFun k1 (TyFun [k] [k1] -> *) -> *) (TyFun k (TyFun k1 k1 -> *) -> *) (ScanrSym0 k k1) l0 = ScanrSym1 k k1 l0 
type Apply (TyFun k [k1] -> *) (TyFun k (Maybe ((,) k1 k)) -> *) (UnfoldrSym0 k k1) l0 = UnfoldrSym1 k k1 l0 
type Apply (TyFun (TyFun k2 k -> *) (TyFun k2 k1 -> *) -> *) (TyFun k k1 -> *) ((:.$) k k1 k2) l0 = (:.$$) k k1 k2 l0 
type Apply (TyFun (TyFun k2 k1 -> *) (TyFun (Either k k2) k1 -> *) -> *) (TyFun k k1 -> *) (Either_Sym0 k k1 k2) l0 = Either_Sym1 k k1 k2 l0 
type Apply (TyFun [k] (TyFun [k1] [k2] -> *) -> *) (TyFun k (TyFun k1 k2 -> *) -> *) (ZipWithSym0 k k1 k2) l0 = ZipWithSym1 k k1 k2 l0 
type Apply (TyFun ((,) k k1) k2 -> *) (TyFun k (TyFun k1 k2 -> *) -> *) (UncurrySym0 k k1 k2) l0 = UncurrySym1 k k1 k2 l0 
type Apply (TyFun k1 (TyFun k k2 -> *) -> *) (TyFun k (TyFun k1 k2 -> *) -> *) (FlipSym0 k k1 k2) l0 = FlipSym1 k k1 k2 l0 
type Apply (TyFun k (TyFun k1 k2 -> *) -> *) (TyFun ((,) k k1) k2 -> *) (CurrySym0 k k1 k2) l0 = CurrySym1 k k1 k2 l0 
type Apply (TyFun k (TyFun [k1] ((,) k [k2]) -> *) -> *) (TyFun k (TyFun k1 ((,) k k2) -> *) -> *) (MapAccumLSym0 k k1 k2) l0 = MapAccumLSym1 k k1 k2 l0 
type Apply (TyFun k (TyFun [k1] ((,) k [k2]) -> *) -> *) (TyFun k (TyFun k1 ((,) k k2) -> *) -> *) (MapAccumRSym0 k k1 k2) l0 = MapAccumRSym1 k k1 k2 l0 
type Apply (TyFun (Maybe k) k1 -> *) (TyFun k k1 -> *) (Maybe_Sym1 k1 k l1) l0 = Maybe_Sym2 k1 k l1 l0 
type Apply (TyFun [k] (TyFun [k1] (TyFun [k2] [k3] -> *) -> *) -> *) (TyFun k (TyFun k1 (TyFun k2 k3 -> *) -> *) -> *) (ZipWith3Sym0 k k1 k2 k3) l0 = ZipWith3Sym1 k k1 k2 k3 l0 
type Apply (TyFun (Either k1 k) k2 -> *) (TyFun k k2 -> *) (Either_Sym1 k1 k2 k l1) l0 = Either_Sym2 k1 k2 k l1 l0 
type Apply (TyFun k k2 -> *) (TyFun k k1 -> *) ((:.$$) k1 k2 k l1) l0 = (:.$$$) k1 k2 k l1 l0 
type Apply (TyFun [k] (TyFun [k1] (TyFun [k2] (TyFun [k3] [k4] -> *) -> *) -> *) -> *) (TyFun k (TyFun k1 (TyFun k2 (TyFun k3 k4 -> *) -> *) -> *) -> *) (ZipWith4Sym0 k k1 k2 k3 k4) l0 = ZipWith4Sym1 k k1 k2 k3 k4 l0 
type Apply (TyFun [k] (TyFun [k1] (TyFun [k2] (TyFun [k3] (TyFun [k4] [k5] -> *) -> *) -> *) -> *) -> *) (TyFun k (TyFun k1 (TyFun k2 (TyFun k3 (TyFun k4 k5 -> *) -> *) -> *) -> *) -> *) (ZipWith5Sym0 k k1 k2 k3 k4 k5) l0 = ZipWith5Sym1 k k1 k2 k3 k4 k5 l0 
type Apply (TyFun [k] (TyFun [k1] (TyFun [k2] (TyFun [k3] (TyFun [k4] (TyFun [k5] [k6] -> *) -> *) -> *) -> *) -> *) -> *) (TyFun k (TyFun k1 (TyFun k2 (TyFun k3 (TyFun k4 (TyFun k5 k6 -> *) -> *) -> *) -> *) -> *) -> *) (ZipWith6Sym0 k k1 k2 k3 k4 k5 k6) l0 = ZipWith6Sym1 k k1 k2 k3 k4 k5 k6 l0 
type Apply (TyFun [k] (TyFun [k1] (TyFun [k2] (TyFun [k3] (TyFun [k4] (TyFun [k5] (TyFun [k6] [k7] -> *) -> *) -> *) -> *) -> *) -> *) -> *) (TyFun k (TyFun k1 (TyFun k2 (TyFun k3 (TyFun k4 (TyFun k5 (TyFun k6 k7 -> *) -> *) -> *) -> *) -> *) -> *) -> *) (ZipWith7Sym0 k k1 k2 k3 k4 k5 k6 k7) l0 = ZipWith7Sym1 k k1 k2 k3 k4 k5 k6 k7 l0 

data TyCon1 :: (k1 -> k2) -> TyFun k1 k2 -> * Source

Wrapper for converting the normal type-level arrow into a TyFun. For example, given:

data Nat = Zero | Succ Nat
type family Map (a :: TyFun 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]

Instances

type Apply k1 k (TyCon1 k k1 f) x = f x 

data TyCon2 :: (k1 -> k2 -> k3) -> TyFun k1 (TyFun k2 k3 -> *) -> * Source

Similar to TyCon1, but for two-parameter type constructors.

Instances

type Apply (TyFun k1 k2 -> *) k (TyCon2 k k1 k2 f) x = TyCon1 k1 k2 (f x) 

data TyCon3 :: (k1 -> k2 -> k3 -> k4) -> TyFun k1 (TyFun k2 (TyFun k3 k4 -> *) -> *) -> * Source

Instances

type Apply (TyFun k1 (TyFun k2 k3 -> *) -> *) k (TyCon3 k k1 k2 k3 f) x = TyCon2 k1 k2 k3 (f x) 

data TyCon4 :: (k1 -> k2 -> k3 -> k4 -> k5) -> TyFun k1 (TyFun k2 (TyFun k3 (TyFun k4 k5 -> *) -> *) -> *) -> * Source

Instances

type Apply (TyFun k1 (TyFun k2 (TyFun k3 k4 -> *) -> *) -> *) k (TyCon4 k k1 k2 k3 k4 f) x = TyCon3 k1 k2 k3 k4 (f x) 

data TyCon5 :: (k1 -> k2 -> k3 -> k4 -> k5 -> k6) -> TyFun k1 (TyFun k2 (TyFun k3 (TyFun k4 (TyFun k5 k6 -> *) -> *) -> *) -> *) -> * Source

Instances

type Apply (TyFun k1 (TyFun k2 (TyFun k3 (TyFun k4 k5 -> *) -> *) -> *) -> *) k (TyCon5 k k1 k2 k3 k4 k5 f) x = TyCon4 k1 k2 k3 k4 k5 (f x) 

data TyCon6 :: (k1 -> k2 -> k3 -> k4 -> k5 -> k6 -> k7) -> TyFun k1 (TyFun k2 (TyFun k3 (TyFun k4 (TyFun k5 (TyFun k6 k7 -> *) -> *) -> *) -> *) -> *) -> * Source

Instances

type Apply (TyFun k1 (TyFun k2 (TyFun k3 (TyFun k4 (TyFun k5 k6 -> *) -> *) -> *) -> *) -> *) k (TyCon6 k k1 k2 k3 k4 k5 k6 f) x = TyCon5 k1 k2 k3 k4 k5 k6 (f x) 

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 -> *) -> *) -> *) -> *) -> *) -> *) -> * Source

Instances

type Apply (TyFun k1 (TyFun k2 (TyFun k3 (TyFun k4 (TyFun k5 (TyFun k6 k7 -> *) -> *) -> *) -> *) -> *) -> *) k (TyCon7 k k1 k2 k3 k4 k5 k6 k7 f) x = TyCon6 k1 k2 k3 k4 k5 k6 k7 (f x) 

type family Apply f x :: k2 Source

Type level function application

Instances

type Apply Bool Bool NotSym0 l0 = NotSym1 l0 
type Apply Bool Bool ((:&&$$) l1) l0 = (:&&$$$) l1 l0 
type Apply Bool Bool ((:||$$) l1) l0 = (:||$$$) l1 l0 
type Apply Ordering Ordering (ThenCmpSym1 l1) l0 = ThenCmpSym2 l1 l0 
type Apply Nat Nat ((:^$$) l1) l0 
type Apply Nat Nat ((:*$$) l1) l0 
type Apply Nat Nat ((:-$$) l1) l0 
type Apply Nat Nat ((:+$$) l1) l0 
type Apply k k (IdSym0 k) l0 = IdSym1 k l0 
type Apply Bool k ((:/=$$) k l1) l0 = (:/=$$$) k l1 l0 
type Apply Bool k ((:==$$) k l1) l0 = (:==$$$) k l1 l0 
type Apply Bool k ((:<=$$) k l1) l0 = (:<=$$$) k l1 l0 
type Apply Bool k ((:>$$) k l1) l0 = (:>$$$) k l1 l0 
type Apply Bool k ((:>=$$) k l1) l0 = (:>=$$$) k l1 l0 
type Apply Bool k ((:<$$) k l1) l0 = (:<$$$) k l1 l0 
type Apply Ordering k (CompareSym1 k l1) l0 = CompareSym2 k l1 l0 
type Apply k k (MinSym1 k l1) l0 = MinSym2 k l1 l0 
type Apply k k (MaxSym1 k l1) l0 = MaxSym2 k l1 l0 
type Apply k Symbol (ErrorSym0 Symbol k) a = Error k a 
type Apply k k (AsTypeOfSym1 k l1) l0 = AsTypeOfSym2 k l1 l0 
type Apply k Nat ((:!!$$) k l1) l0 = (:!!$$$) k l1 l0 
type Apply k1 k (TyCon1 k k1 f) x = f x 
type Apply k Bool (Bool_Sym2 k l1 l2) l0 = Bool_Sym3 k l1 l2 l0 
type Apply k1 k (($!$$) k k1 f) arg = ($!$$$) k1 k f arg 
type Apply k1 k (($$$) k k1 f) arg = ($$$$) k1 k f arg 
type Apply k1 k (ConstSym1 k1 k l1) l0 = ConstSym2 k1 k l1 l0 
type Apply k k (SeqSym1 k1 k l1) l0 = SeqSym2 k1 k l1 l0 
type Apply k k (UntilSym2 k l1 l2) l0 = UntilSym3 k l1 l2 l0 
type Apply k1 k (GenericIndexSym1 k1 k l1) l0 = GenericIndexSym2 k1 k l1 l0 
type Apply k2 k ((:.$$$) k1 k2 k l1 l2) l0 
type Apply k2 k (FlipSym2 k k1 k2 l1 l2) l0 
type Apply k2 k (CurrySym2 k1 k k2 l1 l2) l0 = CurrySym3 k1 k k2 l1 l2 l0 
type Apply Bool [Bool] AndSym0 l0 = AndSym1 l0 
type Apply Bool [Bool] OrSym0 l0 = OrSym1 l0 
type Apply Nat [Nat] SumSym0 l0 = SumSym1 l0 
type Apply Nat [Nat] ProductSym0 l0 = ProductSym1 l0 
type Apply Bool [k] (NullSym0 k) l0 = NullSym1 k l0 
type Apply Bool (Maybe k) (IsJustSym0 k) l0 = IsJustSym1 k l0 
type Apply Bool (Maybe k) (IsNothingSym0 k) l0 = IsNothingSym1 k l0 
type Apply Nat [k] (LengthSym0 k) l0 = LengthSym1 k l0 
type Apply k [k] (HeadSym0 k) l0 = HeadSym1 k l0 
type Apply k [k] (LastSym0 k) l0 = LastSym1 k l0 
type Apply k (Maybe k) (FromJustSym0 k) l0 = FromJustSym1 k l0 
type Apply k [k] (MaximumSym0 k) l0 = MaximumSym1 k l0 
type Apply k [k] (MinimumSym0 k) l0 = MinimumSym1 k l0 
type Apply Bool [k] (Any_Sym1 k l1) l0 = Any_Sym2 k l1 l0 
type Apply Bool [k] (IsSuffixOfSym1 k l1) l0 = IsSuffixOfSym2 k l1 l0 
type Apply Bool [k] (AllSym1 k l1) l0 = AllSym2 k l1 l0 
type Apply Bool [k] (IsInfixOfSym1 k l1) l0 = IsInfixOfSym2 k l1 l0 
type Apply Bool [k] (IsPrefixOfSym1 k l1) l0 = IsPrefixOfSym2 k l1 l0 
type Apply Bool [k] (ElemSym1 k l1) l0 = ElemSym2 k l1 l0 
type Apply Bool [k] (NotElemSym1 k l1) l0 = NotElemSym2 k l1 l0 
type Apply k [k] (MinimumBySym1 k l1) l0 = MinimumBySym2 k l1 l0 
type Apply k [k] (MaximumBySym1 k l1) l0 = MaximumBySym2 k l1 l0 
type Apply k [k] (Foldl1Sym1 k l1) l0 = Foldl1Sym2 k l1 l0 
type Apply k [k] (Foldl1'Sym1 k l1) l0 = Foldl1'Sym2 k l1 l0 
type Apply k [k] (Foldr1Sym1 k l1) l0 = Foldr1Sym2 k l1 l0 
type Apply k (Maybe k) (FromMaybeSym1 k l1) l0 = FromMaybeSym2 k l1 l0 
type Apply k [k1] (GenericLengthSym0 k1 k) l0 = GenericLengthSym1 k1 k l0 
type Apply k1 [k] (FoldrSym2 k k1 l1 l2) l0 = FoldrSym3 k k1 l1 l2 l0 
type Apply k [k1] (FoldlSym2 k k1 l1 l2) l0 = FoldlSym3 k k1 l1 l2 l0 
type Apply k [k1] (Foldl'Sym2 k k1 l1 l2) l0 = Foldl'Sym3 k k1 l1 l2 l0 
type Apply k (Maybe k1) (Maybe_Sym2 k k1 l1 l2) l0 = Maybe_Sym3 k k1 l1 l2 l0 
type Apply Bool (Either k k1) (IsLeftSym0 k k1) l0 = IsLeftSym1 k k1 l0 
type Apply Bool (Either k k1) (IsRightSym0 k k1) l0 = IsRightSym1 k k1 l0 
type Apply k ((,) k k1) (FstSym0 k k1) l0 = FstSym1 k k1 l0 
type Apply k ((,) k1 k) (SndSym0 k1 k) l0 = SndSym1 k1 k l0 
type Apply k2 ((,) k k1) (UncurrySym1 k k1 k2 l1) l0 = UncurrySym2 k k1 k2 l1 l0 
type Apply k1 (Either k k2) (Either_Sym2 k k1 k2 l1 l2) l0 = Either_Sym3 k k1 k2 l1 l2 l0 
type Apply (Maybe k) k (JustSym0 k) l0 = JustSym1 k l0 
type Apply [k] k (ReplicateSym1 k l1) l0 = ReplicateSym2 k l1 l0 
type Apply [k1] k (UnfoldrSym1 k k1 l1) l0 = UnfoldrSym2 k k1 l1 l0 
type Apply [k] k (GenericReplicateSym1 k1 k l1) l0 = GenericReplicateSym2 k1 k l1 l0 
type Apply [[k]] [k] (SubsequencesSym0 k) l0 = SubsequencesSym1 k l0 
type Apply [[k]] [k] (PermutationsSym0 k) l0 = PermutationsSym1 k l0 
type Apply [[k]] [k] (InitsSym0 k) l0 = InitsSym1 k l0 
type Apply [[k]] [k] (TailsSym0 k) l0 = TailsSym1 k l0 
type Apply [[k]] [[k]] (TransposeSym0 k) l0 = TransposeSym1 k l0 
type Apply [[k]] [k] (GroupSym0 k) l0 = GroupSym1 k l0 
type Apply [k] [k] (TailSym0 k) l0 = TailSym1 k l0 
type Apply [k] [k] (InitSym0 k) l0 = InitSym1 k l0 
type Apply [k] [k] (ReverseSym0 k) l0 = ReverseSym1 k l0 
type Apply [k] [[k]] (ConcatSym0 k) l0 = ConcatSym1 k l0 
type Apply [k] (Maybe k) (MaybeToListSym0 k) l0 = MaybeToListSym1 k l0 
type Apply [k] [Maybe k] (CatMaybesSym0 k) l0 = CatMaybesSym1 k l0 
type Apply [k] [k] (SortSym0 k) l0 = SortSym1 k l0 
type Apply [k] [k] (NubSym0 k) l0 = NubSym1 k l0 
type Apply (Maybe k) [k] (ListToMaybeSym0 k) l0 = ListToMaybeSym1 k l0 
type Apply [[k]] [k] (GroupBySym1 k l1) l0 = GroupBySym2 k l1 l0 
type Apply [Nat] [k] (ElemIndicesSym1 k l1) l0 = ElemIndicesSym2 k l1 l0 
type Apply [Nat] [k] (FindIndicesSym1 k l1) l0 = FindIndicesSym2 k l1 l0 
type Apply [k] [k] ((:$$) k l1) l0 = (:$$$) k l1 l0 
type Apply [k] [k] ((:++$$) k l1) l0 
type Apply [k] [Either k k1] (LeftsSym0 k k1) l0 = LeftsSym1 k k1 l0 
type Apply [k] [Either k1 k] (RightsSym0 k1 k) l0 = RightsSym1 k1 k l0 
type Apply [k] [[k]] (IntercalateSym1 k l1) l0 = IntercalateSym2 k l1 l0 
type Apply [k] [k] (IntersperseSym1 k l1) l0 = IntersperseSym2 k l1 l0 
type Apply [k] [k] ((:\\$$) k l1) l0 = (:\\$$$) k l1 l0 
type Apply [k] [k] (Scanl1Sym1 k l1) l0 = Scanl1Sym2 k l1 l0 
type Apply [k] [k] (Scanr1Sym1 k l1) l0 = Scanr1Sym2 k l1 l0 
type Apply [k] [k] (DeleteSym1 k l1) l0 = DeleteSym2 k l1 l0 
type Apply [k] [k] (SortBySym1 k l1) l0 = SortBySym2 k l1 l0 
type Apply [k] [k] (TakeSym1 k l1) l0 = TakeSym2 k l1 l0 
type Apply [k] [k] (DropSym1 k l1) l0 = DropSym2 k l1 l0 
type Apply [k] [k] (TakeWhileSym1 k l1) l0 = TakeWhileSym2 k l1 l0 
type Apply [k] [k] (DropWhileSym1 k l1) l0 = DropWhileSym2 k l1 l0 
type Apply [k] [k] (DropWhileEndSym1 k l1) l0 = DropWhileEndSym2 k l1 l0 
type Apply [k] [k] (InsertSym1 k l1) l0 = InsertSym2 k l1 l0 
type Apply [k] [k] (IntersectSym1 k l1) l0 = IntersectSym2 k l1 l0 
type Apply [k] [k] (FilterSym1 k l1) l0 = FilterSym2 k l1 l0 
type Apply [k] [k] (UnionSym1 k l1) l0 = UnionSym2 k l1 l0 
type Apply [k] [k] (NubBySym1 k l1) l0 = NubBySym2 k l1 l0 
type Apply (Maybe [k]) [k] (StripPrefixSym1 k l1) l0 
type Apply (Maybe Nat) [k] (ElemIndexSym1 k l1) l0 = ElemIndexSym2 k l1 l0 
type Apply (Maybe Nat) [k] (FindIndexSym1 k l1) l0 = FindIndexSym2 k l1 l0 
type Apply (Maybe k) [k] (FindSym1 k l1) l0 = FindSym2 k l1 l0 
type Apply [(,) k1 k] [k] (ZipSym1 k1 k l1) l0 = ZipSym2 k1 k l1 l0 
type Apply [k1] [k] (MapSym1 k k1 l1) l0 = MapSym2 k k1 l1 l0 
type Apply [k] [k] (DeleteFirstsBySym2 k l1 l2) l0 = DeleteFirstsBySym3 k l1 l2 l0 
type Apply [k1] [k] (ConcatMapSym1 k k1 l1) l0 = ConcatMapSym2 k k1 l1 l0 
type Apply [k] [k] (DeleteBySym2 k l1 l2) l0 = DeleteBySym3 k l1 l2 l0 
type Apply [k] [k] (InsertBySym2 k l1 l2) l0 = InsertBySym3 k l1 l2 l0 
type Apply [k1] [k] (MapMaybeSym1 k k1 l1) l0 = MapMaybeSym2 k k1 l1 l0 
type Apply [k] [k] (GenericTakeSym1 k1 k l1) l0 = GenericTakeSym2 k1 k l1 l0 
type Apply [k] [k] (GenericDropSym1 k1 k l1) l0 = GenericDropSym2 k1 k l1 l0 
type Apply [k] [k] (IntersectBySym2 k l1 l2) l0 
type Apply [k] [k] (UnionBySym2 k l1 l2) l0 = UnionBySym3 k l1 l2 l0 
type Apply (Maybe k) [(,) k1 k] (LookupSym1 k1 k l1) l0 = LookupSym2 k1 k l1 l0 
type Apply [k] [k1] (ScanlSym2 k k1 l1 l2) l0 = ScanlSym3 k k1 l1 l2 l0 
type Apply [k1] [k] (ScanrSym2 k k1 l1 l2) l0 = ScanrSym3 k k1 l1 l2 l0 
type Apply [(,,) k1 k2 k] [k] (Zip3Sym2 k1 k2 k l1 l2) l0 = Zip3Sym3 k1 k2 k l1 l2 l0 
type Apply [k2] [k1] (ZipWithSym2 k k1 k2 l1 l2) l0 = ZipWithSym3 k k1 k2 l1 l2 l0 
type Apply [(,,,) k1 k2 k3 k] [k] (Zip4Sym3 k1 k2 k3 k l1 l2 l3) l0 = Zip4Sym4 k1 k2 k3 k l1 l2 l3 l0 
type Apply [k3] [k2] (ZipWith3Sym3 k k1 k2 k3 l1 l2 l3) l0 
type Apply [(,,,,) k1 k2 k3 k4 k] [k] (Zip5Sym4 k1 k2 k3 k4 k l1 l2 l3 l4) l0 = Zip5Sym5 k1 k2 k3 k4 k l1 l2 l3 l4 l0 
type Apply [k4] [k3] (ZipWith4Sym4 k k1 k2 k3 k4 l1 l2 l3 l4) l0 
type Apply [(,,,,,) k1 k2 k3 k4 k5 k] [k] (Zip6Sym5 k1 k2 k3 k4 k5 k l1 l2 l3 l4 l5) l0 = Zip6Sym6 k1 k2 k3 k4 k5 k l1 l2 l3 l4 l5 l0 
type Apply [k5] [k4] (ZipWith5Sym5 k k1 k2 k3 k4 k5 l1 l2 l3 l4 l5) l0 
type Apply [(,,,,,,) k1 k2 k3 k4 k5 k6 k] [k] (Zip7Sym6 k1 k2 k3 k4 k5 k6 k l1 l2 l3 l4 l5 l6) l0 = Zip7Sym7 k1 k2 k3 k4 k5 k6 k l1 l2 l3 l4 l5 l6 l0 
type Apply [k6] [k5] (ZipWith6Sym6 k k1 k2 k3 k4 k5 k6 l1 l2 l3 l4 l5 l6) l0 
type Apply [k7] [k6] (ZipWith7Sym7 k k1 k2 k3 k4 k5 k6 k7 l1 l2 l3 l4 l5 l6 l7) l0 
type Apply (TyFun Bool Bool -> *) Bool (:&&$) l0 = (:&&$$) l0 
type Apply (TyFun Bool Bool -> *) Bool (:||$) l0 = (:||$$) l0 
type Apply (TyFun Ordering Ordering -> *) Ordering ThenCmpSym0 l0 = ThenCmpSym1 l0 
type Apply (TyFun Nat Nat -> *) Nat (:^$) l0 = (:^$$) l0 
type Apply (TyFun Nat Nat -> *) Nat (:*$) l0 = (:*$$) l0 
type Apply (TyFun Nat Nat -> *) Nat (:-$) l0 = (:-$$) l0 
type Apply (TyFun Nat Nat -> *) Nat (:+$) l0 = (:+$$) l0 
type Apply (TyFun [k] [k] -> *) k ((:$) k) l0 = (:$$) k l0 
type Apply (TyFun [k] [k] -> *) k (IntersperseSym0 k) l0 = IntersperseSym1 k l0 
type Apply (TyFun [k] Bool -> *) k (ElemSym0 k) l0 = ElemSym1 k l0 
type Apply (TyFun [k] Bool -> *) k (NotElemSym0 k) l0 = NotElemSym1 k l0 
type Apply (TyFun [k] [k] -> *) k (DeleteSym0 k) l0 = DeleteSym1 k l0 
type Apply (TyFun [k] (Maybe Nat) -> *) k (ElemIndexSym0 k) l0 = ElemIndexSym1 k l0 
type Apply (TyFun [k] [Nat] -> *) k (ElemIndicesSym0 k) l0 = ElemIndicesSym1 k l0 
type Apply (TyFun [k] ((,) [k] [k]) -> *) Nat (SplitAtSym0 k) l0 = SplitAtSym1 k l0 
type Apply (TyFun [k] [k] -> *) Nat (TakeSym0 k) l0 = TakeSym1 k l0 
type Apply (TyFun [k] [k] -> *) Nat (DropSym0 k) l0 = DropSym1 k l0 
type Apply (TyFun [k] [k] -> *) k (InsertSym0 k) l0 = InsertSym1 k l0 
type Apply (TyFun k (TyFun Bool k -> *) -> *) k (Bool_Sym0 k) l0 = Bool_Sym1 k l0 
type Apply (TyFun k Bool -> *) k ((:/=$) k) l0 = (:/=$$) k l0 
type Apply (TyFun k Bool -> *) k ((:==$) k) l0 = (:==$$) k l0 
type Apply (TyFun k k -> *) k (MinSym0 k) l0 = MinSym1 k l0 
type Apply (TyFun k k -> *) k (MaxSym0 k) l0 = MaxSym1 k l0 
type Apply (TyFun k Bool -> *) k ((:<=$) k) l0 = (:<=$$) k l0 
type Apply (TyFun k Bool -> *) k ((:>$) k) l0 = (:>$$) k l0 
type Apply (TyFun k Bool -> *) k ((:>=$) k) l0 = (:>=$$) k l0 
type Apply (TyFun k Bool -> *) k ((:<$) k) l0 = (:<$$) k l0 
type Apply (TyFun k Ordering -> *) k (CompareSym0 k) l0 = CompareSym1 k l0 
type Apply (TyFun k k -> *) k (AsTypeOfSym0 k) l0 = AsTypeOfSym1 k l0 
type Apply (TyFun k [k] -> *) Nat (ReplicateSym0 k) l0 = ReplicateSym1 k l0 
type Apply (TyFun (Maybe k) k -> *) k (FromMaybeSym0 k) l0 = FromMaybeSym1 k l0 
type Apply (TyFun Bool k -> *) k (Bool_Sym1 k l1) l0 = Bool_Sym2 k l1 l0 
type Apply (TyFun (TyFun k1 k -> *) (TyFun (Maybe k1) k -> *) -> *) k (Maybe_Sym0 k k1) l0 = Maybe_Sym1 k k1 l0 
type Apply (TyFun [(,) k k1] (Maybe k1) -> *) k (LookupSym0 k k1) l0 = LookupSym1 k k1 l0 
type Apply (TyFun [k] [k] -> *) k (DeleteBySym1 k l1) l0 = DeleteBySym2 k l1 l0 
type Apply (TyFun [k] [k] -> *) k (InsertBySym1 k l1) l0 = InsertBySym2 k l1 l0 
type Apply (TyFun [k1] [k1] -> *) k (GenericTakeSym0 k k1) l0 = GenericTakeSym1 k k1 l0 
type Apply (TyFun [k1] ((,) [k1] [k1]) -> *) k (GenericSplitAtSym0 k k1) l0 = GenericSplitAtSym1 k k1 l0 
type Apply (TyFun [k1] [k1] -> *) k (GenericDropSym0 k k1) l0 = GenericDropSym1 k k1 l0 
type Apply (TyFun k1 ((,) k k1) -> *) k (Tuple2Sym0 k k1) l0 = Tuple2Sym1 k k1 l0 
type Apply (TyFun k1 k -> *) k (ConstSym0 k k1) l0 = ConstSym1 k k1 l0 
type Apply (TyFun k1 k1 -> *) k (SeqSym0 k k1) l0 = SeqSym1 k k1 l0 
type Apply (TyFun k1 [k1] -> *) k (GenericReplicateSym0 k k1) l0 = GenericReplicateSym1 k k1 l0 
type Apply (Either k1 k) k (RightSym0 k k1) l0 = RightSym1 k k1 l0 
type Apply (Either k k1) k (LeftSym0 k k1) l0 = LeftSym1 k k1 l0 
type Apply (TyFun [k1] k -> *) k (FoldrSym1 k1 k l1) l0 = FoldrSym2 k1 k l1 l0 
type Apply (TyFun [k1] k -> *) k (FoldlSym1 k k1 l1) l0 = FoldlSym2 k k1 l1 l0 
type Apply (TyFun [k1] k -> *) k (Foldl'Sym1 k k1 l1) l0 = Foldl'Sym2 k k1 l1 l0 
type Apply (TyFun [k1] [k] -> *) k (ScanlSym1 k k1 l1) l0 = ScanlSym2 k k1 l1 l0 
type Apply (TyFun [k1] [k] -> *) k (ScanrSym1 k1 k l1) l0 = ScanrSym2 k1 k l1 l0 
type Apply (TyFun k1 (TyFun k2 ((,,) k k1 k2) -> *) -> *) k (Tuple3Sym0 k k1 k2) l0 = Tuple3Sym1 k k1 k2 l0 
type Apply ((,) k1 k) k (Tuple2Sym1 k1 k l1) l0 = Tuple2Sym2 k1 k l1 l0 
type Apply (TyFun [k1] ((,) k [k2]) -> *) k (MapAccumLSym1 k k1 k2 l1) l0 = MapAccumLSym2 k k1 k2 l1 l0 
type Apply (TyFun [k1] ((,) k [k2]) -> *) k (MapAccumRSym1 k k1 k2 l1) l0 = MapAccumRSym2 k k1 k2 l1 l0 
type Apply (TyFun k1 k2 -> *) k (TyCon2 k k1 k2 f) x = TyCon1 k1 k2 (f x) 
type Apply (TyFun k1 (TyFun k2 (TyFun k3 ((,,,) k k1 k2 k3) -> *) -> *) -> *) k (Tuple4Sym0 k k1 k2 k3) l0 = Tuple4Sym1 k k1 k2 k3 l0 
type Apply (TyFun k1 ((,,) k2 k k1) -> *) k (Tuple3Sym1 k2 k k1 l1) l0 = Tuple3Sym2 k2 k k1 l1 l0 
type Apply (TyFun k1 k2 -> *) k (FlipSym1 k1 k k2 l1) l0 = FlipSym2 k1 k k2 l1 l0 
type Apply (TyFun k1 k2 -> *) k (CurrySym1 k k1 k2 l1) l0 = CurrySym2 k k1 k2 l1 l0 
type Apply (TyFun k1 (TyFun k2 k3 -> *) -> *) k (TyCon3 k k1 k2 k3 f) x = TyCon2 k1 k2 k3 (f x) 
type Apply (TyFun k1 (TyFun k2 (TyFun k3 (TyFun k4 ((,,,,) k k1 k2 k3 k4) -> *) -> *) -> *) -> *) k (Tuple5Sym0 k k1 k2 k3 k4) l0 = Tuple5Sym1 k k1 k2 k3 k4 l0 
type Apply (TyFun k1 (TyFun k2 ((,,,) k3 k k1 k2) -> *) -> *) k (Tuple4Sym1 k3 k k1 k2 l1) l0 = Tuple4Sym2 k3 k k1 k2 l1 l0 
type Apply (TyFun k1 (TyFun k2 (TyFun k3 k4 -> *) -> *) -> *) k (TyCon4 k k1 k2 k3 k4 f) x = TyCon3 k1 k2 k3 k4 (f x) 
type Apply (TyFun k1 (TyFun k2 (TyFun k3 (TyFun k4 (TyFun k5 ((,,,,,) k k1 k2 k3 k4 k5) -> *) -> *) -> *) -> *) -> *) k (Tuple6Sym0 k k1 k2 k3 k4 k5) l0 = Tuple6Sym1 k k1 k2 k3 k4 k5 l0 
type Apply (TyFun k1 (TyFun k2 (TyFun k3 ((,,,,) k4 k k1 k2 k3) -> *) -> *) -> *) k (Tuple5Sym1 k4 k k1 k2 k3 l1) l0 = Tuple5Sym2 k4 k k1 k2 k3 l1 l0 
type Apply (TyFun k1 ((,,,) k2 k3 k k1) -> *) k (Tuple4Sym2 k2 k3 k k1 l1 l2) l0 = Tuple4Sym3 k2 k3 k k1 l1 l2 l0 
type Apply (TyFun k1 (TyFun k2 (TyFun k3 (TyFun k4 k5 -> *) -> *) -> *) -> *) k (TyCon5 k k1 k2 k3 k4 k5 f) x = TyCon4 k1 k2 k3 k4 k5 (f x) 
type Apply (TyFun k1 (TyFun k2 (TyFun k3 (TyFun k4 (TyFun k5 (TyFun k6 ((,,,,,,) k k1 k2 k3 k4 k5 k6) -> *) -> *) -> *) -> *) -> *) -> *) k (Tuple7Sym0 k k1 k2 k3 k4 k5 k6) l0 = Tuple7Sym1 k k1 k2 k3 k4 k5 k6 l0 
type Apply (TyFun k1 (TyFun k2 (TyFun k3 (TyFun k4 ((,,,,,) k5 k k1 k2 k3 k4) -> *) -> *) -> *) -> *) k (Tuple6Sym1 k5 k k1 k2 k3 k4 l1) l0 = Tuple6Sym2 k5 k k1 k2 k3 k4 l1 l0 
type Apply (TyFun k1 (TyFun k2 ((,,,,) k3 k4 k k1 k2) -> *) -> *) k (Tuple5Sym2 k3 k4 k k1 k2 l1 l2) l0 = Tuple5Sym3 k3 k4 k k1 k2 l1 l2 l0 
type Apply (TyFun k1 (TyFun k2 (TyFun k3 (TyFun k4 (TyFun k5 k6 -> *) -> *) -> *) -> *) -> *) k (TyCon6 k k1 k2 k3 k4 k5 k6 f) x = TyCon5 k1 k2 k3 k4 k5 k6 (f x) 
type Apply (TyFun k1 (TyFun k2 (TyFun k3 (TyFun k4 (TyFun k5 ((,,,,,,) k6 k k1 k2 k3 k4 k5) -> *) -> *) -> *) -> *) -> *) k (Tuple7Sym1 k6 k k1 k2 k3 k4 k5 l1) l0 = Tuple7Sym2 k6 k k1 k2 k3 k4 k5 l1 l0 
type Apply (TyFun k1 (TyFun k2 (TyFun k3 ((,,,,,) k4 k5 k k1 k2 k3) -> *) -> *) -> *) k (Tuple6Sym2 k4 k5 k k1 k2 k3 l1 l2) l0 = Tuple6Sym3 k4 k5 k k1 k2 k3 l1 l2 l0 
type Apply (TyFun k1 ((,,,,) k2 k3 k4 k k1) -> *) k (Tuple5Sym3 k2 k3 k4 k k1 l1 l2 l3) l0 = Tuple5Sym4 k2 k3 k4 k k1 l1 l2 l3 l0 
type Apply (TyFun k1 (TyFun k2 (TyFun k3 (TyFun k4 (TyFun k5 (TyFun k6 k7 -> *) -> *) -> *) -> *) -> *) -> *) k (TyCon7 k k1 k2 k3 k4 k5 k6 k7 f) x = TyCon6 k1 k2 k3 k4 k5 k6 k7 (f x) 
type Apply (TyFun k1 (TyFun k2 (TyFun k3 (TyFun k4 ((,,,,,,) k5 k6 k k1 k2 k3 k4) -> *) -> *) -> *) -> *) k (Tuple7Sym2 k5 k6 k k1 k2 k3 k4 l1 l2) l0 = Tuple7Sym3 k5 k6 k k1 k2 k3 k4 l1 l2 l0 
type Apply (TyFun k1 (TyFun k2 ((,,,,,) k3 k4 k5 k k1 k2) -> *) -> *) k (Tuple6Sym3 k3 k4 k5 k k1 k2 l1 l2 l3) l0 = Tuple6Sym4 k3 k4 k5 k k1 k2 l1 l2 l3 l0 
type Apply (TyFun k1 (TyFun k2 (TyFun k3 ((,,,,,,) k4 k5 k6 k k1 k2 k3) -> *) -> *) -> *) k (Tuple7Sym3 k4 k5 k6 k k1 k2 k3 l1 l2 l3) l0 = Tuple7Sym4 k4 k5 k6 k k1 k2 k3 l1 l2 l3 l0 
type Apply (TyFun k1 ((,,,,,) k2 k3 k4 k5 k k1) -> *) k (Tuple6Sym4 k2 k3 k4 k5 k k1 l1 l2 l3 l4) l0 = Tuple6Sym5 k2 k3 k4 k5 k k1 l1 l2 l3 l4 l0 
type Apply (TyFun k1 (TyFun k2 ((,,,,,,) k3 k4 k5 k6 k k1 k2) -> *) -> *) k (Tuple7Sym4 k3 k4 k5 k6 k k1 k2 l1 l2 l3 l4) l0 = Tuple7Sym5 k3 k4 k5 k6 k k1 k2 l1 l2 l3 l4 l0 
type Apply (TyFun k1 ((,,,,,,) k2 k3 k4 k5 k6 k k1) -> *) k (Tuple7Sym5 k2 k3 k4 k5 k6 k k1 l1 l2 l3 l4 l5) l0 = Tuple7Sym6 k2 k3 k4 k5 k6 k k1 l1 l2 l3 l4 l5 l0 
type Apply (TyFun [[k]] [k] -> *) [k] (IntercalateSym0 k) l0 = IntercalateSym1 k l0 
type Apply (TyFun [k] [k] -> *) [k] ((:++$) k) l0 = (:++$$) k l0 
type Apply (TyFun [k] Bool -> *) [k] (IsSuffixOfSym0 k) l0 = IsSuffixOfSym1 k l0 
type Apply (TyFun [k] [k] -> *) [k] ((:\\$) k) l0 = (:\\$$) k l0 
type Apply (TyFun [k] Bool -> *) [k] (IsInfixOfSym0 k) l0 = IsInfixOfSym1 k l0 
type Apply (TyFun [k] Bool -> *) [k] (IsPrefixOfSym0 k) l0 = IsPrefixOfSym1 k l0 
type Apply (TyFun [k] (Maybe [k]) -> *) [k] (StripPrefixSym0 k) l0 = StripPrefixSym1 k l0 
type Apply (TyFun [k] [k] -> *) [k] (IntersectSym0 k) l0 = IntersectSym1 k l0 
type Apply (TyFun [k] [k] -> *) [k] (UnionSym0 k) l0 = UnionSym1 k l0 
type Apply (TyFun Nat k -> *) [k] ((:!!$) k) l0 = (:!!$$) k l0 
type Apply (TyFun [k] [k] -> *) [k] (DeleteFirstsBySym1 k l1) l0 = DeleteFirstsBySym2 k l1 l0 
type Apply (TyFun [k1] [(,) k k1] -> *) [k] (ZipSym0 k k1) l0 = ZipSym1 k k1 l0 
type Apply (TyFun [k] [k] -> *) [k] (IntersectBySym1 k l1) l0 = IntersectBySym2 k l1 l0 
type Apply (TyFun [k] [k] -> *) [k] (UnionBySym1 k l1) l0 = UnionBySym2 k l1 l0 
type Apply (TyFun k1 k -> *) [k] (GenericIndexSym0 k k1) l0 = GenericIndexSym1 k k1 l0 
type Apply ((,) [k] [k1]) [(,) k k1] (UnzipSym0 k k1) l0 = UnzipSym1 k k1 l0 
type Apply ((,) [k] [k]) [k] (SplitAtSym1 k l1) l0 = SplitAtSym2 k l1 l0 
type Apply ((,) [k] [k]) [k] (SpanSym1 k l1) l0 = SpanSym2 k l1 l0 
type Apply ((,) [k] [k]) [k] (BreakSym1 k l1) l0 = BreakSym2 k l1 l0 
type Apply ((,) [k] [k]) [k] (PartitionSym1 k l1) l0 = PartitionSym2 k l1 l0 
type Apply (TyFun [k1] (TyFun [k2] [(,,) k k1 k2] -> *) -> *) [k] (Zip3Sym0 k k1 k2) l0 = Zip3Sym1 k k1 k2 l0 
type Apply ((,) [k] [k]) [k] (GenericSplitAtSym1 k1 k l1) l0 = GenericSplitAtSym2 k1 k l1 l0 
type Apply (TyFun [k1] [(,,) k2 k k1] -> *) [k] (Zip3Sym1 k2 k k1 l1) l0 = Zip3Sym2 k2 k k1 l1 l0 
type Apply (TyFun [k1] [k2] -> *) [k] (ZipWithSym1 k k1 k2 l1) l0 = ZipWithSym2 k k1 k2 l1 l0 
type Apply (TyFun [k1] (TyFun [k2] (TyFun [k3] [(,,,) k k1 k2 k3] -> *) -> *) -> *) [k] (Zip4Sym0 k k1 k2 k3) l0 = Zip4Sym1 k k1 k2 k3 l0 
type Apply (TyFun [k1] (TyFun [k2] [k3] -> *) -> *) [k] (ZipWith3Sym1 k k1 k2 k3 l1) l0 = ZipWith3Sym2 k k1 k2 k3 l1 l0 
type Apply (TyFun [k1] (TyFun [k2] [(,,,) k3 k k1 k2] -> *) -> *) [k] (Zip4Sym1 k3 k k1 k2 l1) l0 = Zip4Sym2 k3 k k1 k2 l1 l0 
type Apply (TyFun [k1] (TyFun [k2] (TyFun [k3] (TyFun [k4] [(,,,,) k k1 k2 k3 k4] -> *) -> *) -> *) -> *) [k] (Zip5Sym0 k k1 k2 k3 k4) l0 = Zip5Sym1 k k1 k2 k3 k4 l0 
type Apply ((,) k [k2]) [k1] (MapAccumLSym2 k k1 k2 l1 l2) l0 = MapAccumLSym3 k k1 k2 l1 l2 l0 
type Apply ((,) k [k2]) [k1] (MapAccumRSym2 k k1 k2 l1 l2) l0 = MapAccumRSym3 k k1 k2 l1 l2 l0 
type Apply (TyFun [k2] [k3] -> *) [k1] (ZipWith3Sym2 k k1 k2 k3 l1 l2) l0 = ZipWith3Sym3 k k1 k2 k3 l1 l2 l0 
type Apply (TyFun [k1] [(,,,) k2 k3 k k1] -> *) [k] (Zip4Sym2 k2 k3 k k1 l1 l2) l0 = Zip4Sym3 k2 k3 k k1 l1 l2 l0 
type Apply (TyFun [k1] (TyFun [k2] (TyFun [k3] [(,,,,) k4 k k1 k2 k3] -> *) -> *) -> *) [k] (Zip5Sym1 k4 k k1 k2 k3 l1) l0 = Zip5Sym2 k4 k k1 k2 k3 l1 l0 
type Apply (TyFun [k1] (TyFun [k2] (TyFun [k3] (TyFun [k4] (TyFun [k5] [(,,,,,) k k1 k2 k3 k4 k5] -> *) -> *) -> *) -> *) -> *) [k] (Zip6Sym0 k k1 k2 k3 k4 k5) l0 = Zip6Sym1 k k1 k2 k3 k4 k5 l0 
type Apply (TyFun [k1] (TyFun [k2] (TyFun [k3] [k4] -> *) -> *) -> *) [k] (ZipWith4Sym1 k k1 k2 k3 k4 l1) l0 = ZipWith4Sym2 k k1 k2 k3 k4 l1 l0 
type Apply (TyFun [k1] (TyFun [k2] [(,,,,) k3 k4 k k1 k2] -> *) -> *) [k] (Zip5Sym2 k3 k4 k k1 k2 l1 l2) l0 = Zip5Sym3 k3 k4 k k1 k2 l1 l2 l0 
type Apply (TyFun [k1] (TyFun [k2] (TyFun [k3] (TyFun [k4] [(,,,,,) k5 k k1 k2 k3 k4] -> *) -> *) -> *) -> *) [k] (Zip6Sym1 k5 k k1 k2 k3 k4 l1) l0 = Zip6Sym2 k5 k k1 k2 k3 k4 l1 l0 
type Apply (TyFun [k1] (TyFun [k2] (TyFun [k3] (TyFun [k4] (TyFun [k5] (TyFun [k6] [(,,,,,,) k k1 k2 k3 k4 k5 k6] -> *) -> *) -> *) -> *) -> *) -> *) [k] (Zip7Sym0 k k1 k2 k3 k4 k5 k6) l0 = Zip7Sym1 k k1 k2 k3 k4 k5 k6 l0 
type Apply (TyFun [k2] (TyFun [k3] [k4] -> *) -> *) [k1] (ZipWith4Sym2 k k1 k2 k3 k4 l1 l2) l0 = ZipWith4Sym3 k k1 k2 k3 k4 l1 l2 l0 
type Apply (TyFun [k1] (TyFun [k2] (TyFun [k3] (TyFun [k4] [k5] -> *) -> *) -> *) -> *) [k] (ZipWith5Sym1 k k1 k2 k3 k4 k5 l1) l0 = ZipWith5Sym2 k k1 k2 k3 k4 k5 l1 l0 
type Apply (TyFun [k1] [(,,,,) k2 k3 k4 k k1] -> *) [k] (Zip5Sym3 k2 k3 k4 k k1 l1 l2 l3) l0 = Zip5Sym4 k2 k3 k4 k k1 l1 l2 l3 l0 
type Apply (TyFun [k1] (TyFun [k2] (TyFun [k3] [(,,,,,) k4 k5 k k1 k2 k3] -> *) -> *) -> *) [k] (Zip6Sym2 k4 k5 k k1 k2 k3 l1 l2) l0 = Zip6Sym3 k4 k5 k k1 k2 k3 l1 l2 l0 
type Apply (TyFun [k1] (TyFun [k2] (TyFun [k3] (TyFun [k4] (TyFun [k5] [(,,,,,,) k6 k k1 k2 k3 k4 k5] -> *) -> *) -> *) -> *) -> *) [k] (Zip7Sym1 k6 k k1 k2 k3 k4 k5 l1) l0 = Zip7Sym2 k6 k k1 k2 k3 k4 k5 l1 l0 
type Apply (TyFun [k3] [k4] -> *) [k2] (ZipWith4Sym3 k k1 k2 k3 k4 l1 l2 l3) l0 = ZipWith4Sym4 k k1 k2 k3 k4 l1 l2 l3 l0 
type Apply (TyFun [k2] (TyFun [k3] (TyFun [k4] [k5] -> *) -> *) -> *) [k1] (ZipWith5Sym2 k k1 k2 k3 k4 k5 l1 l2) l0 = ZipWith5Sym3 k k1 k2 k3 k4 k5 l1 l2 l0 
type Apply (TyFun [k1] (TyFun [k2] (TyFun [k3] (TyFun [k4] (TyFun [k5] [k6] -> *) -> *) -> *) -> *) -> *) [k] (ZipWith6Sym1 k k1 k2 k3 k4 k5 k6 l1) l0 = ZipWith6Sym2 k k1 k2 k3 k4 k5 k6 l1 l0 
type Apply (TyFun [k1] (TyFun [k2] [(,,,,,) k3 k4 k5 k k1 k2] -> *) -> *) [k] (Zip6Sym3 k3 k4 k5 k k1 k2 l1 l2 l3) l0 = Zip6Sym4 k3 k4 k5 k k1 k2 l1 l2 l3 l0 
type Apply (TyFun [k1] (TyFun [k2] (TyFun [k3] (TyFun [k4] [(,,,,,,) k5 k6 k k1 k2 k3 k4] -> *) -> *) -> *) -> *) [k] (Zip7Sym2 k5 k6 k k1 k2 k3 k4 l1 l2) l0 = Zip7Sym3 k5 k6 k k1 k2 k3 k4 l1 l2 l0 
type Apply (TyFun [k3] (TyFun [k4] [k5] -> *) -> *) [k2] (ZipWith5Sym3 k k1 k2 k3 k4 k5 l1 l2 l3) l0 = ZipWith5Sym4 k k1 k2 k3 k4 k5 l1 l2 l3 l0 
type Apply (TyFun [k2] (TyFun [k3] (TyFun [k4] (TyFun [k5] [k6] -> *) -> *) -> *) -> *) [k1] (ZipWith6Sym2 k k1 k2 k3 k4 k5 k6 l1 l2) l0 = ZipWith6Sym3 k k1 k2 k3 k4 k5 k6 l1 l2 l0 
type Apply (TyFun [k1] (TyFun [k2] (TyFun [k3] (TyFun [k4] (TyFun [k5] (TyFun [k6] [k7] -> *) -> *) -> *) -> *) -> *) -> *) [k] (ZipWith7Sym1 k k1 k2 k3 k4 k5 k6 k7 l1) l0 = ZipWith7Sym2 k k1 k2 k3 k4 k5 k6 k7 l1 l0 
type Apply (TyFun [k1] [(,,,,,) k2 k3 k4 k5 k k1] -> *) [k] (Zip6Sym4 k2 k3 k4 k5 k k1 l1 l2 l3 l4) l0 = Zip6Sym5 k2 k3 k4 k5 k k1 l1 l2 l3 l4 l0 
type Apply (TyFun [k1] (TyFun [k2] (TyFun [k3] [(,,,,,,) k4 k5 k6 k k1 k2 k3] -> *) -> *) -> *) [k] (Zip7Sym3 k4 k5 k6 k k1 k2 k3 l1 l2 l3) l0 = Zip7Sym4 k4 k5 k6 k k1 k2 k3 l1 l2 l3 l0 
type Apply (TyFun [k4] [k5] -> *) [k3] (ZipWith5Sym4 k k1 k2 k3 k4 k5 l1 l2 l3 l4) l0 = ZipWith5Sym5 k k1 k2 k3 k4 k5 l1 l2 l3 l4 l0 
type Apply (TyFun [k3] (TyFun [k4] (TyFun [k5] [k6] -> *) -> *) -> *) [k2] (ZipWith6Sym3 k k1 k2 k3 k4 k5 k6 l1 l2 l3) l0 = ZipWith6Sym4 k k1 k2 k3 k4 k5 k6 l1 l2 l3 l0 
type Apply (TyFun [k2] (TyFun [k3] (TyFun [k4] (TyFun [k5] (TyFun [k6] [k7] -> *) -> *) -> *) -> *) -> *) [k1] (ZipWith7Sym2 k k1 k2 k3 k4 k5 k6 k7 l1 l2) l0 = ZipWith7Sym3 k k1 k2 k3 k4 k5 k6 k7 l1 l2 l0 
type Apply (TyFun [k1] (TyFun [k2] [(,,,,,,) k3 k4 k5 k6 k k1 k2] -> *) -> *) [k] (Zip7Sym4 k3 k4 k5 k6 k k1 k2 l1 l2 l3 l4) l0 = Zip7Sym5 k3 k4 k5 k6 k k1 k2 l1 l2 l3 l4 l0 
type Apply (TyFun [k4] (TyFun [k5] [k6] -> *) -> *) [k3] (ZipWith6Sym4 k k1 k2 k3 k4 k5 k6 l1 l2 l3 l4) l0 = ZipWith6Sym5 k k1 k2 k3 k4 k5 k6 l1 l2 l3 l4 l0 
type Apply (TyFun [k3] (TyFun [k4] (TyFun [k5] (TyFun [k6] [k7] -> *) -> *) -> *) -> *) [k2] (ZipWith7Sym3 k k1 k2 k3 k4 k5 k6 k7 l1 l2 l3) l0 = ZipWith7Sym4 k k1 k2 k3 k4 k5 k6 k7 l1 l2 l3 l0 
type Apply (TyFun [k1] [(,,,,,,) k2 k3 k4 k5 k6 k k1] -> *) [k] (Zip7Sym5 k2 k3 k4 k5 k6 k k1 l1 l2 l3 l4 l5) l0 = Zip7Sym6 k2 k3 k4 k5 k6 k k1 l1 l2 l3 l4 l5 l0 
type Apply (TyFun [k5] [k6] -> *) [k4] (ZipWith6Sym5 k k1 k2 k3 k4 k5 k6 l1 l2 l3 l4 l5) l0 = ZipWith6Sym6 k k1 k2 k3 k4 k5 k6 l1 l2 l3 l4 l5 l0 
type Apply (TyFun [k4] (TyFun [k5] (TyFun [k6] [k7] -> *) -> *) -> *) [k3] (ZipWith7Sym4 k k1 k2 k3 k4 k5 k6 k7 l1 l2 l3 l4) l0 = ZipWith7Sym5 k k1 k2 k3 k4 k5 k6 k7 l1 l2 l3 l4 l0 
type Apply (TyFun [k5] (TyFun [k6] [k7] -> *) -> *) [k4] (ZipWith7Sym5 k k1 k2 k3 k4 k5 k6 k7 l1 l2 l3 l4 l5) l0 = ZipWith7Sym6 k k1 k2 k3 k4 k5 k6 k7 l1 l2 l3 l4 l5 l0 
type Apply (TyFun [k6] [k7] -> *) [k5] (ZipWith7Sym6 k k1 k2 k3 k4 k5 k6 k7 l1 l2 l3 l4 l5 l6) l0 = ZipWith7Sym7 k k1 k2 k3 k4 k5 k6 k7 l1 l2 l3 l4 l5 l6 l0 
type Apply (TyFun (TyFun k k -> *) (TyFun k k -> *) -> *) (TyFun k Bool -> *) (UntilSym0 k) l0 = UntilSym1 k l0 
type Apply (TyFun [k] Bool -> *) (TyFun k Bool -> *) (Any_Sym0 k) l0 = Any_Sym1 k l0 
type Apply (TyFun [k] (TyFun [k] [k] -> *) -> *) (TyFun k (TyFun k Bool -> *) -> *) (DeleteFirstsBySym0 k) l0 = DeleteFirstsBySym1 k l0 
type Apply (TyFun [k] k -> *) (TyFun k (TyFun k Ordering -> *) -> *) (MinimumBySym0 k) l0 = MinimumBySym1 k l0 
type Apply (TyFun [k] k -> *) (TyFun k (TyFun k Ordering -> *) -> *) (MaximumBySym0 k) l0 = MaximumBySym1 k l0 
type Apply (TyFun [k] k -> *) (TyFun k (TyFun k k -> *) -> *) (Foldl1Sym0 k) l0 = Foldl1Sym1 k l0 
type Apply (TyFun [k] k -> *) (TyFun k (TyFun k k -> *) -> *) (Foldl1'Sym0 k) l0 = Foldl1'Sym1 k l0 
type Apply (TyFun [k] k -> *) (TyFun k (TyFun k k -> *) -> *) (Foldr1Sym0 k) l0 = Foldr1Sym1 k l0 
type Apply (TyFun [k] Bool -> *) (TyFun k Bool -> *) (AllSym0 k) l0 = AllSym1 k l0 
type Apply (TyFun [k] [k] -> *) (TyFun k (TyFun k k -> *) -> *) (Scanl1Sym0 k) l0 = Scanl1Sym1 k l0 
type Apply (TyFun [k] [k] -> *) (TyFun k (TyFun k k -> *) -> *) (Scanr1Sym0 k) l0 = Scanr1Sym1 k l0 
type Apply (TyFun [k] [k] -> *) (TyFun k (TyFun k Ordering -> *) -> *) (SortBySym0 k) l0 = SortBySym1 k l0 
type Apply (TyFun [k] (Maybe Nat) -> *) (TyFun k Bool -> *) (FindIndexSym0 k) l0 = FindIndexSym1 k l0 
type Apply (TyFun [k] [Nat] -> *) (TyFun k Bool -> *) (FindIndicesSym0 k) l0 = FindIndicesSym1 k l0 
type Apply (TyFun [k] [k] -> *) (TyFun k Bool -> *) (TakeWhileSym0 k) l0 = TakeWhileSym1 k l0 
type Apply (TyFun [k] [k] -> *) (TyFun k Bool -> *) (DropWhileSym0 k) l0 = DropWhileSym1 k l0 
type Apply (TyFun [k] [k] -> *) (TyFun k Bool -> *) (DropWhileEndSym0 k) l0 = DropWhileEndSym1 k l0 
type Apply (TyFun [k] [[k]] -> *) (TyFun k (TyFun k Bool -> *) -> *) (GroupBySym0 k) l0 = GroupBySym1 k l0 
type Apply (TyFun [k] ((,) [k] [k]) -> *) (TyFun k Bool -> *) (SpanSym0 k) l0 = SpanSym1 k l0 
type Apply (TyFun [k] ((,) [k] [k]) -> *) (TyFun k Bool -> *) (BreakSym0 k) l0 = BreakSym1 k l0 
type Apply (TyFun [k] (Maybe k) -> *) (TyFun k Bool -> *) (FindSym0 k) l0 = FindSym1 k l0 
type Apply (TyFun [k] (TyFun [k] [k] -> *) -> *) (TyFun k (TyFun k Bool -> *) -> *) (IntersectBySym0 k) l0 = IntersectBySym1 k l0 
type Apply (TyFun [k] [k] -> *) (TyFun k Bool -> *) (FilterSym0 k) l0 = FilterSym1 k l0 
type Apply (TyFun [k] ((,) [k] [k]) -> *) (TyFun k Bool -> *) (PartitionSym0 k) l0 = PartitionSym1 k l0 
type Apply (TyFun [k] (TyFun [k] [k] -> *) -> *) (TyFun k (TyFun k Bool -> *) -> *) (UnionBySym0 k) l0 = UnionBySym1 k l0 
type Apply (TyFun [k] [k] -> *) (TyFun k (TyFun k Bool -> *) -> *) (NubBySym0 k) l0 = NubBySym1 k l0 
type Apply (TyFun k (TyFun [k] [k] -> *) -> *) (TyFun k (TyFun k Bool -> *) -> *) (DeleteBySym0 k) l0 = DeleteBySym1 k l0 
type Apply (TyFun k (TyFun [k] [k] -> *) -> *) (TyFun k (TyFun k Ordering -> *) -> *) (InsertBySym0 k) l0 = InsertBySym1 k l0 
type Apply (TyFun [k] [k1] -> *) (TyFun k k1 -> *) (MapSym0 k k1) l0 = MapSym1 k k1 l0 
type Apply (TyFun [k] [k1] -> *) (TyFun k [k1] -> *) (ConcatMapSym0 k k1) l0 = ConcatMapSym1 k k1 l0 
type Apply (TyFun [k] [k1] -> *) (TyFun k (Maybe k1) -> *) (MapMaybeSym0 k k1) l0 = MapMaybeSym1 k k1 l0 
type Apply (TyFun k k1 -> *) (TyFun k k1 -> *) (($!$) k k1) arg = ($!$$) k k1 arg 
type Apply (TyFun k k1 -> *) (TyFun k k1 -> *) (($$) k k1) arg = ($$$) k k1 arg 
type Apply (TyFun k1 (TyFun [k] k1 -> *) -> *) (TyFun k (TyFun k1 k1 -> *) -> *) (FoldrSym0 k k1) l0 = FoldrSym1 k k1 l0 
type Apply (TyFun k k -> *) (TyFun k k -> *) (UntilSym1 k l1) l0 = UntilSym2 k l1 l0 
type Apply (TyFun k (TyFun [k1] k -> *) -> *) (TyFun k (TyFun k1 k -> *) -> *) (FoldlSym0 k k1) l0 = FoldlSym1 k k1 l0 
type Apply (TyFun k (TyFun [k1] k -> *) -> *) (TyFun k (TyFun k1 k -> *) -> *) (Foldl'Sym0 k k1) l0 = Foldl'Sym1 k k1 l0 
type Apply (TyFun k (TyFun [k1] [k] -> *) -> *) (TyFun k (TyFun k1 k -> *) -> *) (ScanlSym0 k k1) l0 = ScanlSym1 k k1 l0 
type Apply (TyFun k1 (TyFun [k] [k1] -> *) -> *) (TyFun k (TyFun k1 k1 -> *) -> *) (ScanrSym0 k k1) l0 = ScanrSym1 k k1 l0 
type Apply (TyFun k [k1] -> *) (TyFun k (Maybe ((,) k1 k)) -> *) (UnfoldrSym0 k k1) l0 = UnfoldrSym1 k k1 l0 
type Apply ((,) k1 k) ((,) k k1) (SwapSym0 k k1) l0 = SwapSym1 k k1 l0 
type Apply (TyFun (TyFun k2 k -> *) (TyFun k2 k1 -> *) -> *) (TyFun k k1 -> *) ((:.$) k k1 k2) l0 = (:.$$) k k1 k2 l0 
type Apply (TyFun (TyFun k2 k1 -> *) (TyFun (Either k k2) k1 -> *) -> *) (TyFun k k1 -> *) (Either_Sym0 k k1 k2) l0 = Either_Sym1 k k1 k2 l0 
type Apply (TyFun [k] (TyFun [k1] [k2] -> *) -> *) (TyFun k (TyFun k1 k2 -> *) -> *) (ZipWithSym0 k k1 k2) l0 = ZipWithSym1 k k1 k2 l0 
type Apply (TyFun ((,) k k1) k2 -> *) (TyFun k (TyFun k1 k2 -> *) -> *) (UncurrySym0 k k1 k2) l0 = UncurrySym1 k k1 k2 l0 
type Apply (TyFun k1 (TyFun k k2 -> *) -> *) (TyFun k (TyFun k1 k2 -> *) -> *) (FlipSym0 k k1 k2) l0 = FlipSym1 k k1 k2 l0 
type Apply (TyFun k (TyFun k1 k2 -> *) -> *) (TyFun ((,) k k1) k2 -> *) (CurrySym0 k k1 k2) l0 = CurrySym1 k k1 k2 l0 
type Apply (TyFun k (TyFun [k1] ((,) k [k2]) -> *) -> *) (TyFun k (TyFun k1 ((,) k k2) -> *) -> *) (MapAccumLSym0 k k1 k2) l0 = MapAccumLSym1 k k1 k2 l0 
type Apply (TyFun k (TyFun [k1] ((,) k [k2]) -> *) -> *) (TyFun k (TyFun k1 ((,) k k2) -> *) -> *) (MapAccumRSym0 k k1 k2) l0 = MapAccumRSym1 k k1 k2 l0 
type Apply (TyFun (Maybe k) k1 -> *) (TyFun k k1 -> *) (Maybe_Sym1 k1 k l1) l0 = Maybe_Sym2 k1 k l1 l0 
type Apply (TyFun [k] (TyFun [k1] (TyFun [k2] [k3] -> *) -> *) -> *) (TyFun k (TyFun k1 (TyFun k2 k3 -> *) -> *) -> *) (ZipWith3Sym0 k k1 k2 k3) l0 = ZipWith3Sym1 k k1 k2 k3 l0 
type Apply (TyFun (Either k1 k) k2 -> *) (TyFun k k2 -> *) (Either_Sym1 k1 k2 k l1) l0 = Either_Sym2 k1 k2 k l1 l0 
type Apply (TyFun k k2 -> *) (TyFun k k1 -> *) ((:.$$) k1 k2 k l1) l0 = (:.$$$) k1 k2 k l1 l0 
type Apply (TyFun [k] (TyFun [k1] (TyFun [k2] (TyFun [k3] [k4] -> *) -> *) -> *) -> *) (TyFun k (TyFun k1 (TyFun k2 (TyFun k3 k4 -> *) -> *) -> *) -> *) (ZipWith4Sym0 k k1 k2 k3 k4) l0 = ZipWith4Sym1 k k1 k2 k3 k4 l0 
type Apply (TyFun [k] (TyFun [k1] (TyFun [k2] (TyFun [k3] (TyFun [k4] [k5] -> *) -> *) -> *) -> *) -> *) (TyFun k (TyFun k1 (TyFun k2 (TyFun k3 (TyFun k4 k5 -> *) -> *) -> *) -> *) -> *) (ZipWith5Sym0 k k1 k2 k3 k4 k5) l0 = ZipWith5Sym1 k k1 k2 k3 k4 k5 l0 
type Apply (TyFun [k] (TyFun [k1] (TyFun [k2] (TyFun [k3] (TyFun [k4] (TyFun [k5] [k6] -> *) -> *) -> *) -> *) -> *) -> *) (TyFun k (TyFun k1 (TyFun k2 (TyFun k3 (TyFun k4 (TyFun k5 k6 -> *) -> *) -> *) -> *) -> *) -> *) (ZipWith6Sym0 k k1 k2 k3 k4 k5 k6) l0 = ZipWith6Sym1 k k1 k2 k3 k4 k5 k6 l0 
type Apply (TyFun [k] (TyFun [k1] (TyFun [k2] (TyFun [k3] (TyFun [k4] (TyFun [k5] (TyFun [k6] [k7] -> *) -> *) -> *) -> *) -> *) -> *) -> *) (TyFun k (TyFun k1 (TyFun k2 (TyFun k3 (TyFun k4 (TyFun k5 (TyFun k6 k7 -> *) -> *) -> *) -> *) -> *) -> *) -> *) (ZipWith7Sym0 k k1 k2 k3 k4 k5 k6 k7) l0 = ZipWith7Sym1 k k1 k2 k3 k4 k5 k6 k7 l0 
type Apply ((,,) k1 k2 k) k (Tuple3Sym2 k1 k2 k l1 l2) l0 = Tuple3Sym3 k1 k2 k l1 l2 l0 
type Apply ((,,) [k] [k1] [k2]) [(,,) k k1 k2] (Unzip3Sym0 k k1 k2) l0 = Unzip3Sym1 k k1 k2 l0 
type Apply ((,,,) k1 k2 k3 k) k (Tuple4Sym3 k1 k2 k3 k l1 l2 l3) l0 = Tuple4Sym4 k1 k2 k3 k l1 l2 l3 l0 
type Apply ((,,,) [k] [k1] [k2] [k3]) [(,,,) k k1 k2 k3] (Unzip4Sym0 k k1 k2 k3) l0 = Unzip4Sym1 k k1 k2 k3 l0 
type Apply ((,,,,) k1 k2 k3 k4 k) k (Tuple5Sym4 k1 k2 k3 k4 k l1 l2 l3 l4) l0 = Tuple5Sym5 k1 k2 k3 k4 k l1 l2 l3 l4 l0 
type Apply ((,,,,) [k] [k1] [k2] [k3] [k4]) [(,,,,) k k1 k2 k3 k4] (Unzip5Sym0 k k1 k2 k3 k4) l0 = Unzip5Sym1 k k1 k2 k3 k4 l0 
type Apply ((,,,,,) k1 k2 k3 k4 k5 k) k (Tuple6Sym5 k1 k2 k3 k4 k5 k l1 l2 l3 l4 l5) l0 = Tuple6Sym6 k1 k2 k3 k4 k5 k l1 l2 l3 l4 l5 l0 
type Apply ((,,,,,) [k] [k1] [k2] [k3] [k4] [k5]) [(,,,,,) k k1 k2 k3 k4 k5] (Unzip6Sym0 k k1 k2 k3 k4 k5) l0 = Unzip6Sym1 k k1 k2 k3 k4 k5 l0 
type Apply ((,,,,,,) k1 k2 k3 k4 k5 k6 k) k (Tuple7Sym6 k1 k2 k3 k4 k5 k6 k l1 l2 l3 l4 l5 l6) l0 = Tuple7Sym7 k1 k2 k3 k4 k5 k6 k l1 l2 l3 l4 l5 l6 l0 
type Apply ((,,,,,,) [k] [k1] [k2] [k3] [k4] [k5] [k6]) [(,,,,,,) k k1 k2 k3 k4 k5 k6] (Unzip7Sym0 k k1 k2 k3 k4 k5 k6) l0 = Unzip7Sym1 k k1 k2 k3 k4 k5 k6 l0 

type (@@) a b = Apply a b infixl 9 Source

An infix synonym for Apply

Defunctionalized singletons

When calling a higher-order singleton function, you need to use a singFun... function to wrap it. See singFun1.

singFun1 :: Proxy f -> SingFunction1 f -> Sing f Source

Use this function when passing a function on singletons as a higher-order function. You will often need an explicit type annotation to get this to work. For example:

falses = sMap (singFun1 sNot :: Sing NotSym0)
              (STrue `SCons` STrue `SCons` SNil)

There are a family of singFun... functions, keyed by the number of parameters of the function.

unSingFun1 :: Proxy f -> Sing f -> SingFunction1 f Source

This is the inverse of singFun1, and likewise for the other unSingFun... functions.

These type synonyms are exported only to improve error messages; users should not have to mention them.

type SingFunction1 f = forall t. Sing t -> Sing (f @@ t) Source

type SingFunction2 f = forall t. Sing t -> SingFunction1 (f @@ t) Source

type SingFunction3 f = forall t. Sing t -> SingFunction2 (f @@ t) Source

type SingFunction4 f = forall t. Sing t -> SingFunction3 (f @@ t) Source

type SingFunction5 f = forall t. Sing t -> SingFunction4 (f @@ t) Source

type SingFunction6 f = forall t. Sing t -> SingFunction5 (f @@ t) Source

type SingFunction7 f = forall t. Sing t -> SingFunction6 (f @@ t) Source

Auxiliary functions

bugInGHC :: forall a. a Source

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.

data KProxy t :: * -> *

A concrete, promotable proxy type, for use at the kind level There are no instances for this because it is intended at the kind level only

Constructors

KProxy