!O2      !"#$%&'()*+,-. / 0 1 2 3 4 5 6 7 8 9:;<=>?@AB C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r stuvwxyz{|}~       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~/(c) 2016 Patrick BahrBSD3Patrick Bahr <paba@diku.dk> experimentalnon-portable (GHC Extensions)Safe#compdata-paramAuxiliary function to extract the first and second argument of a binary type application (the third argument of this function). If the second argument is NothingO or not of the right shape, the first two arguments are returned as a default.compdata-paramAuxiliary function to extract the first and second argument of a ternary type application (the third argument of this function). If the second argument is NothingO or not of the right shape, the first two arguments are returned as a default."(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)Safe;=>?)compdata-paramThis class represents difunctors, i.e. binary type constructors that are contravariant in the first argument and covariant in the second argument.compdata-param&The canonical example of a difunctor. "(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)NoneV-compdata-paramDerive an instance of P for a type constructor of any parametric kind taking at least two arguments. "(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)Safe<>?0compdata-paramTDifunctors representing data structures that can be traversed from left to right. (c) 2010-2011 Patrick BahrBSD3Patrick Bahr <paba@diku.dk> experimentalnon-portable (GHC Extensions)None4 compdata-paramDerive an instance of P for a type constructor of any first-order kind taking at least one argument.  "(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)NoneK:!compdata-param6Abstract notion of a name (the constructor is hidden)."compdata-param,Monad for generating fresh (abstract) names.#compdata-param7Run the given computation with the next available name.$compdata-param-Evaluate a computation that uses fresh names.!"#$"!#$"(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)None;=V@k+compdata-param Signature printing. An instance ShowD f gives rise to an instance  Show (Term f). -compdata-paramDerive an instance of +P for a type constructor of any parametric kind taking at least two arguments. +,- "(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)NoneKGE.compdata-param6Abstract notion of a name (the constructor is hidden)./compdata-param,Monad for generating fresh (abstract) names.0compdata-paramChange the type tag of a name.1compdata-param7Run the given computation with the next available name.2compdata-param-Evaluate a computation that uses fresh names../012/.102"(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)Safe &';=>?QSTVL9compdata-param.This class represents higher-order difunctors.;compdata-paramvA higher-order difunctor gives rise to a higher-order functor when restricted to a particular contravariant argument.  9:9:   "(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)None ;=FVS"<compdata-param Signature printing. An instance ShowHD f gives rise to an instance Show (Term f i). >compdata-paramDerive an instance of <R for a type constructor of any parametric kind taking at least three arguments. <=>!"(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)NoneVW%?compdata-paramDerive an instance of 9R for a type constructor of any parametric kind taking at least three arguments. 9?"(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)Safe &';<=>?QSTV[@compdata-paramUHDifunctors representing data structures that can be traversed from left to right. @A@A "(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)Safe ;=>?AFQSTVk Ccompdata-param%Remove annotations from a signature. Dcompdata-paramOThis class defines how to distribute an annotation over a sum of signatures. Ecompdata-param'Inject an annotation over a signature. Fcompdata-param(Project an annotation from a signature. Gcompdata-param7This data type adds a constant product to a signature. Icompdata-param7Formal product of signatures (higher-order difunctors).Kcompdata-paramSignature containment relation for automatic injections. The left-hand must be an atomic signature, where as the right-hand side must have a list-like structure. Examples include  f :<: f :+: g and g :<: f :+: (g :+: h), non-examples include f :+: g :<: f :+: (g :+: h) and f :<: (f :+: g) :+: h.Ncompdata-param&Formal sum of signatures (difunctors).Qcompdata-paramrUtility function to case on a higher-order difunctor sum, without exposing the internal representation of sums. BCDFEGHIJKMLNPOQRSNPOQKMLIJRSGHDFEBCG7H7I8J8N6 "(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)None &'>?EFQSTVx _compdata-paramMonads for which embedded TrmG values, which are parametric at top level, can be made into monadic Term5 values, i.e. "pushing the parametricity inwards". acompdata-paramoA term is a context with no holes, where all occurrences of the contravariant parameter is fully parametric. dcompdata-param "Preterms" |ecompdata-paramA context may contain holes. fcompdata-paramPhantom type used to define a. gcompdata-paramPhantom type used to define e. hcompdata-param#This data type represents contexts over a signature. Contexts are terms containing zero or more holes, and zero or more parameters. The first parameter is a phantom type indicating whether the context has holes. The second paramater is the signature of the context, in the form of a  Data.Comp.Param.Multi.HDifunctor. The third parameter is the type of parameters, the fourth parameter is the type of holes, and the fifth parameter is the GADT type. lcompdata-param-Convert a difunctorial value into a context. ncompdata-paramThis is an instance of  for h.ocompdata-paramThis is an instance of A for h._`abcdefghjkilmnohjkigfabcdelmno_`""(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)NoneYscompdata-paramDerive smart constructors with annotations for a higher-order difunctor. The smart constructors are similar to the ordinary constructors, but a 'injectA . hdimap Var id' is automatically inserted. s"(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)None &'<FQSTVx(tcompdata-param2This type represents a monadic term homomorphism. ucompdata-param1This type represents a monadic context function. vcompdata-param3This type represents a monadic signature function. wcompdata-param*This type represents a term homomorphism. xcompdata-param)This type represents a context function. ycompdata-param+This type represents a signature function. zcompdata-paramjThis type represents a monadic algebra, but where the covariant argument is also a monadic computation. {compdata-param9This type represents a monadic algebra. It is similar to |# but the return type is monadic. |compdata-param1This type represents an algebra over a difunctor f and carrier a. }compdata-param+Construct a catamorphism for contexts over f with holes of type b, from the given algebra. ~compdata-param1Construct a catamorphism from the given algebra. compdata-paramA generalisation of ~ from terms over f to contexts over f:, where the holes have the type of the algebra carrier. compdata-param<This function applies a whole context into another context. compdata-param3Construct a monadic catamorphism for contexts over f with holes of type b", from the given monadic algebra. compdata-paramAConstruct a monadic catamorphism from the given monadic algebra. compdata-param3Construct a monadic catamorphism for contexts over f with holes of type b", from the given monadic algebra. compdata-paramAConstruct a monadic catamorphism from the given monadic algebra. compdata-param9Apply a term homomorphism recursively to a term/context. compdata-paramXApply a term homomorphism recursively to a term/context. This is a top-down variant of .compdata-param Compose two term homomorphisms. compdata-paramBCompose an algebra with a term homomorphism to get a new algebra. compdata-paramAThis function applies a signature function to the given context. compdata-paramAThis function applies a signature function to the given context. compdata-param0This function composes two signature functions. compdata-paramGLifts the given signature function to the canonical term homomorphism. compdata-paramLift the given signature function to a monadic signature function. Note that term homomorphisms are instances of signature functions. Hence this function also applies to term homomorphisms. compdata-paramILift the give monadic signature function to a monadic term homomorphism. compdata-paramBLift the given signature function to a monadic term homomorphism. compdata-paramAApply a monadic term homomorphism recursively to a term/context. compdata-param;A restricted form of |appHomM| which only works for terms. compdata-param`Apply a monadic term homomorphism recursively to a term/context. This is a top-down variant of .compdata-param<A restricted form of |appHomM'| which only works for terms. compdata-paramIThis function applies a monadic signature function to the given context. compdata-param>A restricted form of |appSigFunM| which only works for terms. compdata-paramhThis function applies a monadic signature function to the given context. This is a top-down variant of .compdata-param?A restricted form of |appSigFunM'| which only works for terms. compdata-param(Compose two monadic term homomorphisms. compdata-param[Compose a monadic algebra with a monadic term homomorphism to get a new monadic algebra. compdata-paramSCompose a monadic algebra with a term homomorphism to get a new monadic algebra. compdata-param8This function composes two monadic signature functions. +tuvwxyz{|}~+|}~{zxywuvt#"(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)None&'$"(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)None "(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)None&';<=>?STVcompdata-paramLProject the outermost layer of a term to a sub signature. If the signature g is compound of n atomic signatures, use projectn instead.compdata-paramTries to coerce a termcontext to a term0context over a sub-signature. If the signature g is compound of n atomic signatures, use  deepProjectn instead.compdata-paramNInject a term where the outermost layer is a sub signature. If the signature g is compound of n atomic signatures, use injectn instead.compdata-paramVInject a term over a sub signature to a term over larger signature. If the signature g is compound of n atomic signatures, use  deepInjectn instead.compdata-param<This function injects a whole context into another context. compdata-param4This function lifts the given functor to a context. AKLMNQAKNQML "(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)None &';=ST#compdata-param Signature equality. An instance EqHD f gives rise to an instance  Eq (Term f i),. The equality test is performed inside the /+ monad for generating fresh identifiers. compdata-paramJEquality on parametric values. The equality test is performed inside the /( monad for generating fresh identifiers.compdata-paramEquality on terms. compdata-paramFrom an  difunctor an ; instance of the corresponding term type can be derived. compdata-param is propagated through sums. "(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)None &';=STcompdata-param Signature ordering. An instance OrdHD f gives rise to an instance  Ord (Term f). compdata-paramOrdering of parametric values.compdata-paramOrdering of terms. compdata-paramFrom an  difunctor an ; instance of the corresponding term type can be derived. compdata-param is propagated through sums. %"(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)None;=Vcompdata-paramDerive an instance of R for a type constructor of any parametric kind taking at least three arguments. &"(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)None;=Vcompdata-paramDerive an instance of R for a type constructor of any parametric kind taking at least three arguments. '"(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)Nonecompdata-paramDerive smart constructors for a higher-order difunctor. The smart constructors are similar to the ordinary constructors, but a 'inject . hdimap Var id' is automatically inserted. "(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)NoneAcompdata-paramGiven the name of a type class, where the first parameter is a higher-order difunctor, lift it to sums of higher-order difunctors. Example: class ShowHD f where ... is lifted as <instance (ShowHD f, ShowHD g) => ShowHD (f :+: g) where ... . 9<=>?s<=>9?s"(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)None &';=STVcompdata-paramPrinting of terms. compdata-paramFrom an < higher-order difunctor an <; instance of the corresponding term type can be derived. <=<='(c) 2010-2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)None &';=>?QSTVcompdata-paramTransform a function with a domain constructed from a higher-order difunctor to a function with a domain constructed with the same higher-order difunctor, but with an additional annotation. compdata-paramTransform a function with a domain constructed from a higher-order difunctor to a function with a domain constructed with the same higher-order difunctor, but with an additional annotation. compdata-paramTStrip the annotations from a term over a higher-order difunctor with annotations. compdata-param)Lift a term homomorphism over signatures f and gR to a term homomorphism over the same signatures, but extended with annotations. compdata-param1Lift a monadic term homomorphism over signatures f and g[ to a monadic term homomorphism over the same signatures, but extended with annotations. compdata-param4Annotate each node of a term with a constant value. compdata-paramThis function is similar to G but applies to signatures with an annotation which is then ignored. BCDEFGHIJGHIJDEFBC("(c) 2011 Patrick Bahr, Tom HvitvedBSD3:Patrick Bahr <paba@diku.dk>, Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)None  9:BCDEFGHIJKLMNQ_`abcdefghjkilmnotuvwxyz{|}~"(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)None ;=>?QSTVBcompdata-param!The desugaring term homomorphism.compdata-paramDesugar a term.compdata-param#Lift desugaring to annotated terms.compdata-paramDefault desugaring instance."(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)Safe ;=>?AST.s compdata-param%Remove annotations from a signature. compdata-paramOThis class defines how to distribute an annotation over a sum of signatures. compdata-param'Inject an annotation over a signature.  compdata-param(Project an annotation from a signature.  compdata-param7This data type adds a constant product to a signature.  compdata-param*Formal product of signatures (difunctors).compdata-paramSignature containment relation for automatic injections. The left-hand must be an atomic signature, where as the right-hand side must have a list-like structure. Examples include  f :<: f :+: g and g :<: f :+: (g :+: h), non-examples include f :+: g :<: f :+: (g :+: h) and f :<: (f :+: g) :+: h.compdata-param&Formal sum of signatures (difunctors).compdata-parameUtility function to case on a difunctor sum, without exposing the internal representation of sums.            7 7 8 86"(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)None &';=>?EFQVBe "compdata-paramMonads for which embedded TrmG values, which are parametric at top level, can be made into monadic Term5 values, i.e. "pushing the parametricity inwards". $compdata-paramoA term is a context with no holes, where all occurrences of the contravariant parameter is fully parametric. 'compdata-param "Preterms" (compdata-paramA context may contain holes. )compdata-paramPhantom type used to define $. *compdata-paramPhantom type used to define (. +compdata-param#This data type represents contexts over a signature. Contexts are terms containing zero or more holes, and zero or more parameters. The first parameter is a phantom type indicating whether the context has holes. The second paramater is the signature of the context, in the form of a Data.Comp.Param.Difunctorb. The third parameter is the type of parameters, and the fourth parameter is the type of holes. /compdata-param-Convert a difunctorial value into a context. 1compdata-paramVThis combinator maps a function over a context by applying the function to each hole."#$%&'()*+-.,/01+-.,*)$%&'(/01"#)"(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)NoneH5compdata-paramDerive smart constructors with annotations for a difunctor. The smart constructors are similar to the ordinary constructors, but a 'injectA . dimap Var id' is automatically inserted. 5"(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)None &'<QSTVI6compdata-paramAThis type represents a generalised cv-coalgebra over a difunctor f and carrier a. 7compdata-param=This type represents a monadic cv-coalgebra over a difunctor f and carrier a. 8compdata-param5This type represents a cv-coalgebra over a difunctor f and carrier a. The list of (a,b)s represent the parameters that may occur in the constructed value. The first component represents the seed of the parameter, and the second component is the (polymorphic) parameter itself. If f4 is itself a binder, then the parameters bound by fX can be passed to the covariant argument, thereby making them available to sub terms. 9compdata-param9This type represents a monadic cv-algebra over a functor f and carrier a. :compdata-param3This type represents a cv-algebra over a difunctor f and carrier a. ;compdata-param:This type represents a monadic r-coalgebra over a functor f and carrier a. <compdata-param5This type represents an r-coalgebra over a difunctor f and carrier a. =compdata-param:This type represents a monadic r-algebra over a difunctor f and carrier a. >compdata-param3This type represents an r-algebra over a difunctor f and carrier a. ?compdata-param:This type represents a monadic coalgebra over a difunctor f and carrier a. @compdata-param2This type represents a coalgebra over a difunctor f and carrier a. The list of (a,b)s represent the parameters that may occur in the constructed value. The first component represents the seed of the parameter, and the second component is the (polymorphic) parameter itself. If f4 is itself a binder, then the parameters bound by fX can be passed to the covariant argument, thereby making them available to sub terms. Acompdata-paramEThis type represents a monadic term homomorphism. It is similar to B, but has monadic values also in the domain. Bcompdata-param2This type represents a monadic term homomorphism. Ccompdata-paramFThis type represents a monadic signature function. It is similar to E, but has monadic values also in the domain. Dcompdata-param1This type represents a monadic context function. Ecompdata-param3This type represents a monadic signature function. Fcompdata-param*This type represents a term homomorphism. Gcompdata-param+This type represents a signature function. Hcompdata-param)This type represents a context function. Icompdata-param9This type represents a monadic algebra. It is similar to J# but the return type is monadic. Jcompdata-param1This type represents an algebra over a difunctor f and carrier a. Kcompdata-param+Construct a catamorphism for contexts over f with holes of type b, from the given algebra. Lcompdata-param1Construct a catamorphism from the given algebra. Mcompdata-paramA generalisation of L from terms over f to contexts over f:, where the holes have the type of the algebra carrier. Ncompdata-param<This function applies a whole context into another context. Ocompdata-paramMConvert a monadic algebra into an ordinary algebra with a monadic carrier. Pcompdata-param3Construct a monadic catamorphism for contexts over f with holes of type b", from the given monadic algebra. Qcompdata-paramAConstruct a monadic catamorphism from the given monadic algebra. Rcompdata-paramA generalisation of Q from terms over f to contexts over fB, where the holes have the type of the monadic algebra carrier. Scompdata-param9Apply a term homomorphism recursively to a term/context. Tcompdata-param9Apply a term homomorphism recursively to a term/context. Ucompdata-param Compose two term homomorphisms. Vcompdata-paramBCompose an algebra with a term homomorphism to get a new algebra. Xcompdata-paramAThis function applies a signature function to the given context. Ycompdata-parambThis function applies a signature function to the given context. This is a top-bottom variant of X.Zcompdata-param0This function composes two signature functions. [compdata-paramEThis function composes a term homomorphism and a signature function. \compdata-paramEThis function composes a term homomorphism and a signature function. ]compdata-paramGLifts the given signature function to the canonical term homomorphism. ^compdata-paramLift the given signature function to a monadic signature function. Note that term homomorphisms are instances of signature functions. Hence this function also applies to term homomorphisms. _compdata-paramBLift the given signature function to a monadic term homomorphism. `compdata-paramcApply a monadic term homomorphism recursively to a term/context. The monad is sequenced bottom-up.acompdata-param;A restricted form of |appHomM| which only works for terms. bcompdata-paramaApply a monadic term homomorphism recursively to a term/context. The monad is sequence top-down.ccompdata-param<A restricted form of |appHomM'| which only works for terms. dcompdata-paramtThis function constructs the unique monadic homomorphism from the initial term algebra to the given term algebra. ecompdata-paramIThis function applies a monadic signature function to the given context. fcompdata-param>A restricted form of |appSigFunM| which only works for terms. gcompdata-paramiThis function applies a monadic signature function to the given context. This is a 'top-down variant of e.hcompdata-param?A restricted form of |appSigFunM'| which only works for terms. icompdata-paramAThis function applies a signature function to the given context. jcompdata-param?A restricted form of |appSigFunMD| which only works for terms. kcompdata-param(Compose two monadic term homomorphisms. lcompdata-param(Compose two monadic term homomorphisms. mcompdata-param(Compose two monadic term homomorphisms. ncompdata-param(Compose two monadic term homomorphisms. ocompdata-param[Compose a monadic algebra with a monadic term homomorphism to get a new monadic algebra. pcompdata-paramSCompose a monadic algebra with a term homomorphism to get a new monadic algebra. qcompdata-param\Compose a monadic algebra with a monadic signature function to get a new monadic algebra. rcompdata-paramTCompose a monadic algebra with a signature function to get a new monadic algebra. scompdata-param8This function composes two monadic signature functions. tcompdata-param3Construct an anamorphism from the given coalgebra. ucompdata-paramBConstruct a monadic anamorphism from the given monadic coalgebra. vcompdata-param3Construct a paramorphism from the given r-algebra. wcompdata-paramCConstruct a monadic paramorphism from the given monadic r-algebra. xcompdata-param5Construct an apomorphism from the given r-coalgebra. ycompdata-paramDConstruct a monadic apomorphism from the given monadic r-coalgebra. compdata-paramThis function applies   at the tip of the term.zcompdata-param5Construct a histomorphism from the given cv-algebra. {compdata-paramEConstruct a monadic histomorphism from the given monadic cv-algebra. |compdata-param6Construct a futumorphism from the given cv-coalgebra. }compdata-paramFConstruct a monadic futumorphism from the given monadic cv-coalgebra. ~compdata-paramBConstruct a futumorphism from the given generalised cv-coalgebra. I6789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~IJKLMNIOPQRHGFSTUXYZ[\]VWDEBCA^`abc_defghijklsmnqrop@t?u>v=w<x;y:z9{8|6~7}*"(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)None&'=+"(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)NoneE   "(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)None&';<=>?QSTVcompdata-paramLProject the outermost layer of a term to a sub signature. If the signature g is compound of n atomic signatures, use projectn instead.compdata-paramTries to coerce a termcontext to a term0context over a sub-signature. If the signature g is compound of n atomic signatures, use  deepProjectn instead.compdata-paramNInject a term where the outermost layer is a sub signature. If the signature g is compound of n atomic signatures, use injectn instead.compdata-paramNInject a term where the outermost layer is a sub signature. If the signature g is compound of n atomic signatures, use injectn instead.compdata-paramVInject a term over a sub signature to a term over larger signature. If the signature g is compound of n atomic signatures, use  deepInjectn instead.compdata-param<This function injects a whole context into another context. compdata-param4This function lifts the given functor to a context. BB"(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)None&';=STcompdata-param Signature equality. An instance EqD f gives rise to an instance  Eq (Term f),. The equality test is performed inside the "+ monad for generating fresh identifiers. compdata-paramJEquality on parametric values. The equality test is performed inside the "( monad for generating fresh identifiers.compdata-paramEquality on terms. compdata-paramFrom an  difunctor an ; instance of the corresponding term type can be derived. compdata-param is propagated through sums. "(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)None &';=STwcompdata-param Signature ordering. An instance OrdD f gives rise to an instance  Ord (Term f). compdata-paramOrdering of parametric values.compdata-paramOrdering of terms. compdata-paramFrom an  difunctor an ; instance of the corresponding term type can be derived. compdata-param is propagated through sums. ,"(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)None;=Vcompdata-paramDerive an instance of P for a type constructor of any parametric kind taking at least two arguments. -"(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)None;=Vcompdata-paramDerive an instance of P for a type constructor of any parametric kind taking at least two arguments. ."(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)Nonecompdata-paramDerive smart constructors for a difunctor. The smart constructors are similar to the ordinary constructors, but a 'inject . dimap Var id' is automatically inserted. "(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)NoneFcompdata-paramtGiven the name of a type class, where the first parameter is a difunctor, lift it to sums of difunctors. Example: class ShowD f where ... is lifted as 9instance (ShowD f, ShowD g) => ShowD (f :+: g) where ... .  +,-5+,- 5"(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)None &';=ST7compdata-paramPrinting of terms. compdata-paramFrom an + difunctor an +; instance of the corresponding term type can be derived. +,+,'(c) 2010-2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)None &';=>?QSTVmcompdata-paramTransform a function with a domain constructed from a functor to a function with a domain constructed with the same functor, but with an additional annotation. compdata-paramTransform a function with a domain constructed from a functor to a function with a domain constructed with the same functor, but with an additional annotation. compdata-paramCStrip the annotations from a term over a functor with annotations. compdata-param)Lift a term homomorphism over signatures f and gR to a term homomorphism over the same signatures, but extended with annotations. compdata-param1Lift a monadic term homomorphism over signatures f and g[ to a monadic term homomorphism over the same signatures, but extended with annotations. compdata-param4Annotate each node of a term with a constant value. compdata-paramThis function is similar to E but applies to signatures with an annotation which is then ignored.           /"(c) 2011 Patrick Bahr, Tom HvitvedBSD3:Patrick Bahr <paba@diku.dk>, Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)NoneL     "#$%&'()*+-.,/016789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"(c) 2011 Patrick Bahr, Tom HvitvedBSD3Tom Hvitved <hvitved@diku.dk> experimentalnon-portable (GHC Extensions)None ;=>?QSTVcompdata-param!The desugaring term homomorphism.compdata-paramDesugar a term.compdata-param#Lift desugaring to annotated terms.compdata-paramDefault desugaring instance.(c) 2011 Patrick BahrBSD3Patrick Bahr <paba@diku.dk> experimentalnon-portable (GHC Extensions)None&'<QSTV2K compdata-paramGThis type represents algebras which have terms with thunks as carrier.compdata-param*This type represents contexts with thunks.compdata-param'This type represents terms with thunks.compdata-param'This type represents terms with thunks.compdata-param7This function turns a monadic computation into a thunk.compdata-paramDThis function evaluates all thunks until a non-thunk node is found.compdata-param?This function first evaluates the argument term into whnf via  and then projects the top-level signature to the desired subsignature. Failure to do the projection is signalled as a failure in the monad.compdata-param#This function evaluates all thunks.compdata-param#This function evaluates all thunks.compdata-paramThis function evaluates all thunks while simultaneously projecting the term to a smaller signature. Failure to do the projection is signalled as a failure in the monad as in .compdata-paramThis function evaluates all thunks while simultaneously projecting the term to a smaller signature. Failure to do the projection is signalled as a failure in the monad as in .compdata-param}This combinator makes the evaluation of the given functor application strict by evaluating all thunks of immediate subterms.compdata-param}This combinator makes the evaluation of the given functor application strict by evaluating all thunks of immediate subterms. 01201301345645745849:49;49;49<49=49=49>49?49?49@49A49A49B49C49D49E4FGHIJKLMNOPQRSTUVWXYZ[\]^ R S _ T U V W X Z Y [`ab c d e!fgh i j k l m n n o o p q r s t u v w x y z { | } ~             "              %&' !"#$%&'ijklmnnoopqrstu(wx)*{|}+,-)./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ  [\]^_,`-a.bcd !"#$%&'efghijklmnopqrstuv0wx#y#z#{$|$}$~*y*z*{+|+}+~+compdata-param-0.9.2-3u2bR6B2WgTGfCDhvi2WwWData.Comp.Param.Multi.Algebra$Data.Comp.Param.Multi.HDitraversable Data.Comp.Param.Multi.HDifunctorData.Comp.Param.Multi.DeriveData.Comp.Param.DifunctorData.Comp.Param.DeriveData.Comp.Param.DitraversableData.Comp.Param.FreshMData.Comp.Param.Multi.FreshMData.Comp.Param.Multi.OpsData.Comp.Param.Multi.TermData.Comp.Param.Multi.SumData.Comp.Param.Multi.EqualityData.Comp.Param.Multi.OrderingData.Comp.Param.Multi.Show Data.Comp.Param.Multi.AnnotationData.Comp.Param.Multi.DesugarData.Comp.Param.OpsData.Comp.Param.TermData.Comp.Param.AlgebraData.Comp.Param.SumData.Comp.Param.EqualityData.Comp.Param.OrderingData.Comp.Param.ShowData.Comp.Param.AnnotationData.Comp.Param.DesugarData.Comp.Param.ThunkData.Comp.Param.Derive.Utils Data.Comp.Param.Derive.Difunctor$Data.Comp.Param.Derive.DitraversableData.Comp.Param.Derive.Show!Data.Comp.Param.Multi.Derive.Show'Data.Comp.Param.Multi.Derive.HDifunctor/Data.Comp.Param.Multi.Derive.SmartAConstructors(Data.Comp.Param.Multi.Derive.Projections'Data.Comp.Param.Multi.Derive.Injections%Data.Comp.Param.Multi.Derive.Ordering%Data.Comp.Param.Multi.Derive.Equality.Data.Comp.Param.Multi.Derive.SmartConstructorsData.Comp.Param.Multi)Data.Comp.Param.Derive.SmartAConstructors"Data.Comp.Param.Derive.Projections!Data.Comp.Param.Derive.InjectionsData.Comp.Param.Derive.OrderingData.Comp.Param.Derive.Equality(Data.Comp.Param.Derive.SmartConstructorsData.Comp.ParambaseData.Functor.Compose getComposeCompose$compdata-0.12-CeFRmeS8zRuKuhc6rRWnMzData.Comp.Multi.HTraversable htraversehmapM HTraversableData.Comp.Multi.HFunctorunIIunKKunEEunAA:->NatMhfmapHFunctorData.Comp.Derive.Utilsderive Difunctordimapdifmap $fFunctorf$fDifunctor(->) makeDifunctor DitraversabledimapM disequencemakeDitraversableNameFreshMwithName evalFreshM $fOrdName $fShowName $fMonadFreshM$fApplicativeFreshM$fFunctorFreshM$fEqNameShowDshowD makeShowD nameCoerce HDifunctorhdimap $fHFunctorfShowHDshowHD makeShowHDmakeHDifunctorHDitraversablehdimapMRemAremADistAnninjectAprojectA:&::*::<:injproj:+:InlInrcaseHDffstfsnd$fHDitraversable:+:$fHDifunctor:+: $f:<:f:+: $f:<:f:+:0$f:<:ff$fHDitraversable:&:$fHDifunctor:&:$fDistAnn:+:p:+:$fDistAnnfp:&: $fRemA:&:f $fRemA:+::+: ParamFunctortermMTermunTermTrmContextNoHoleHoleCxtInVarsimpCxttoCxthfmapCxt hdimapMCxt$fParamFunctor[]$fParamFunctorEither$fParamFunctorMaybesmartAConstructorsHomMCxtFunMSigFunMHomCxtFunSigFunAlgM'AlgMAlgfreecatacata'appCxtfreeMcataMfreeM'cataM'appHomappHom'compHomcompAlg appSigFun appSigFun' compSigFunhomsigFunMhom'homMappHomMappTHomMappHomM' appTHomM' appSigFunM appTSigFunM appSigFunM' appTSigFunM'compHomMcompAlgM compAlgM' compSigFunMproj2proj3proj4proj5proj6proj7proj8proj9proj10projectproject2project3project4project5project6project7project8project9 project10 deepProject deepProject2 deepProject3 deepProject4 deepProject5 deepProject6 deepProject7 deepProject8 deepProject9 deepProject10inj2inj3inj4inj5inj6inj7inj8inj9inj10injectinject2inject3inject4inject5inject6inject7inject8inject9inject10 deepInject deepInject2 deepInject3 deepInject4 deepInject5 deepInject6 deepInject7 deepInject8 deepInject9 deepInject10 injectCxtliftCxt$fEq:+:$fOrd:+: $fShow:+:EqHDeqHDPEqpeq $fPEqName$fPEqK$fEqTerm$fPEqCxt $fEqHDCxt $fEqHD:+:OrdHD compareHDPOrdpcompare $fPOrdName$fPOrdK $fOrdTerm $fPOrdCxt $fOrdHDCxt $fOrdHD:+: makeOrdHDmakeEqHDsmartConstructorsliftSum $fShowHD:&: $fShowTerm $fShowHDCxt $fShowHD:+:liftAliftA'stripApropAnnpropAnnMannproject'DesugardesugHom desugHom'desugardesugarA $fDesugarfg $fDesugar:+:hcaseD$fDitraversable:+:$fDifunctor:+:$fDitraversable:&:$fDifunctor:&:cxtMapCVCoalg'CVCoalgMCVCoalgCVAlgMCVAlgRCoalgMRCoalgRAlgMRAlgCoalgMCoalgHomMDSigFunMDalgM compAlgSigFun compHomSigFun compSigFunHomhomMD appSigFunMD appTSigFunMD compHomM'compSigFunHomMcompSigFunHomM'compAlgSigFunMcompAlgSigFunM'anaanaMparaparaMapoapoMhistohistoMfutufutuMfutu'inject'EqDeqD$fPEqa$fPEq[]$fEqDCxt$fEqD:+:OrdDcompareDcompList$fPOrda$fPOrd[] $fOrdDCxt $fOrdD:+:makeOrdDmakeEqD $fShowD:&: $fShowDCxt $fShowD:+:AlgTThunkCxtTTrmTTermTthunkwhnfwhnf'whnfPrnfTnfnfTPrnfPr evalStrictstrictstrict'getBinaryFArgsgetTernaryFArgsData.Traversable Traversableprojnprojectn deepProjectninjninjectn deepInjectnghc-prim GHC.ClassesEqOrd projectTip