úÎFGCt     (c) 2014 Jonas SchollBSD3jonas.scholl@gmx.de experimental non-portable Trustworthy %&9;<=?DR[;Wrapper around data values so we can create a list of them.Monadic version of .@Class of transformations, i.e. objects containing endomorphisms.HHeterogeneous list structure holding endomorphisms in a monadic context.XWrapper object holding some endomorphism in a monadic context without exposing its type.3Heterogeneous list structure holding endomorphisms.CWrapper object holding some endomorphism without exposing its type.Wrap a function as an .Wrap a monadic function as an .ÓFold a list of endomorphisms over some element. If an endomorphism needs a different type than our element it is skipped. Endomorphisms later in the list are applied to the result of previous applications. The use of ÿ in this function is valid. We use it to cast type a to type b where a is the type of our second argument and b is the type needed by f (which has type b -> b). If we can cast a to b we know a ~ b and we know that x and f x have the same type, so we can coerce b back to a. Same as  but in a monadic context.ÿqTransform some data structure by applying one or more endomorphisms to the data structure or any sub-term of it. Sub-terms are transformed before the terms containing them are transformed. If the given endomorphisms contain two or more endomorphisms working on the same type the latter endomorphisms will be applied to the result of the former endomorphismsÔNOTE: This function attempts to check at runtime if all given endomorphisms can be applied to at least one term in the given argument. If at least one endomorphism can never be applied because of its type, !> is called. If you don't want this behavior consider using   instead.Example:+transform (+1) (1, 4.0, (False, [4, 5, 6]))(2, 4.0, (False, [5, 6, 7]))dtransform [mkItem (+1), mkItem (sqrt :: Double -> Double), mkItem (*2)] (1, 4.0, (False, [4, 5, 6]))(4, 2.0, (False, [10, 12, 14]))transform (+1) False•*** Exception: Data.DataTraverse.transform: Could not find all needed types when mapping over a value of type Bool. Types of missing terms: [Integer] Same as $ but with a monadic function. Calls " instead of ! if a type-error is detected. Same as 6 but omits any type checking (and hence does not call !). Same as  6 but omits any type checking (and hence does not call ").#0Helper function doing the actual data traversal.$0Helper function doing the actual data traversal. ‚Returns all sub-terms (intermediate and non intermediate) of some type of a value transformed by the supplied function to some %. NOTE: Calls !0 if no sub-term which the needed type can exist.Example:UgetSubterms (\ x -> if x then [x] else []) (3, 4.0, True, 'c', (False, (True, 5, 6))) [True, True] _Returns all sub-terms (intermediate and non intermediate) of some type of a value as a list. NOTE: Calls !0 if no sub-term which the needed type can exist.Example:DgetSubterms' (3, 4.0, True, 'c', (False, (True, 5, 6))) :: [Integer] [3, 5, 6]qReturns all sub-terms (intermediate and non intermediate) of some type of a value which fulfill the predicate. NOTE: Calls !0 if no sub-term which the needed type can exist.Example:=getSubtermsBy (<6) (3, 4.0, True, 'c', (False, (True, 5, 6)))[3, 5]xReturns all sub-terms (intermediate and non intermediate) of some type of a value which could be transformed to some %. NOTE: Calls !0 if no sub-term which the needed type can exist.Example:_getSubtermsWith (\ x -> guard (x < 6) >> return [x]) (3, 4.0, True, 'c', (False, (True, 5, 6)))[3, 5]&[Return a set of all type representations found inside a term. The term is not evaluated.'Helper function for &.(RConstruct a list of empty values, one for each constructor found in the data type.)Get the set of needed *s for all functions in the .+Get the set of needed *s for all functions in the .2,-./0123456  #$ &'()+  ',-./0123456  #$ &'()+(c) 2014 Jonas SchollBSD3jonas.scholl@gmx.de experimental non-portableSafe    7      !"#$%"&'"()*+"(,-./0"123 456789:;<-data-transform-0.1.0.1-COABnf9YftELja80Dw1ztCData.Transform.InternalData.TransformMonadicTransformationTransformation EndoListM EndoMItemEndoListEndoItemmkItemmkItemM transform transformMunsafeTransformunsafeTransformM getSubterms getSubterms' getSubtermsBygetSubtermsWith$fMonadicTransformation[]m$fMonadicTransformation(->)m!$fMonadicTransformationEndoMItemm!$fMonadicTransformationEndoListMm$fTransformationEndo$fTransformation(->)$fTransformation[]$fTransformationEndoItem$fTransformationEndoList$fIsListEndoListM$fMonoidEndoListM$fIsListEndoList$fMonoidEndoList WrappedData appEndoListbase Unsafe.Coerce unsafeCoerce appEndoListMGHC.ErrerrorGHC.BasefailunsafeTransform'unsafeTransformM'MonoidallContainedTypeRepsallContainedTypeReps'constructEmptiesgetNeededTypeRepsData.Typeable.InternalTypeRepgetNeededTypeRepsM mkEndoListM toEndoListM mkEndoList toEndoListNilMConsMNilCons