!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ (c) Fumiaki Kinoshita 2015BSD3'Fumiaki Kinoshita <fumiexcel@gmail.com> experimental non-portableNone!"&'(+-./234=HJKM Poly-kinded Maybe 1Turn a wrapper type into one clause that returns a. Poly-kinded Const Just a value.A type synonym for lenses % :: Lens' s a -> (a -> a) -> (s -> s) % :: Lens' s a -> (a -> r) -> (s -> r) % :: Lens' s a -> (a -> a) -> (s -> s) Destruct . Apply a function to its content.       (c) Fumiaki Kinoshita 2015BSD3'Fumiaki Kinoshita <fumiexcel@gmail.com> experimental non-portableNone!"&'(*+23468=HJKMTType level mergingType level concat Type level ++ Type level map!Ideally, it will be 'Map Succ'"The successor of the number#Converts type naturals into .%Type level binary number)Type-level tail*Interleaved list+ Lookup types,Elaborate the result of +-.A type sugar to make type error more readable...A type sugar to make type error more readable./.A type sugar to make type error more readable.3Unicode flipped alias for 04!Ensure that the first element of xs is x8 The type of extensible products.= Lookup types>The position of x in the type level set xs.@ Generates a >2 that corresponds to the given ordinal (0-origin).ARemember that  Member xs x from >.B/Embodies a type equivalence to ensure that the > points the first element.C Compare two >s.DPRIVILEGED: Navigate a tree.EThe > points the first elementFThe next membershipGDescribes the relation of > within a treeHDescribes the relation of > within a treeIGHC can't prove thisJGHC can't prove this; !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJ? !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJ/>??BC@45DEFGH8:901A3%('&#$+=67"!<;*2)IJ ,/.-/ !"#$%('&)*+,-./012345678:9;<=>?@ABCDEFGHIJ(c) Fumiaki Kinoshita 2015BSD3'Fumiaki Kinoshita <fumiexcel@gmail.com> experimental non-portableNone!"&'(*+234=HJKMKThe extensible sum typeMChange the wrapper.NO(1) lift a value.QO(1) Naive pattern matchRThere is no empty union.S3A traversal that tries to point a specific element. KLMNOPQRS KLMNOPQRS KLMNOPQRSKLMNOPQRSQ(c) Fumiaki Kinoshita 2015BSD3'Fumiaki Kinoshita <fumiexcel@gmail.com> experimental non-portableNone!"&'(*+2346=HJKMT4Guarantees the all elements satisfies the predicate.UO(n) Analogous to l!, but it also supplies a context c x for every elements in xs.VSGiven a function that maps types to values, we can "collect" entities all you want.WO(n). htabulates a product with the given function.XO(1) Extract the head element.YO(n)6 Extract the tail of the product. FIXME: unsafeCoerceZ)Split a product to the head and the tail.[An alias for (\).\O(log n) Add an element to a product.]<Transform every elements in a product, preserving the order. ]  "a  ] (f . g) "a ] f . ] g ^<Transform every elements in a product, preserving the order._Combine products.` for heterogeneous producta for heterogeneous productb1Map elements to a monoid and combine the results. b f . ] g "a b (f . g)c<Traverse all elements and combine the result sequentially.  htraverse (fmap f . g) "a fmap (hmap f) . htraverse g htraverse pure "a pure htraverse (Comp . fmap g . f) "a Comp . fmap (htraverse g) . htraverse f d analog for extensible productse The dual of cf The dual of dgO(log n) Pick up an elemtnt.hFlipped gi] with its indices.jO(log n) A lens for a specific element.kO(log n)( A lens for a value in a known position.lPure version of W. ] f (l g) "a l (f . g) l (h m) "a m h (l k) "a k mPure version of U.TUVWXYZ[\]^_`abcdefghijklm89:TUVWXYZ[\]^_`abcdefghijklm8:9\[_XYZ]i^`abcdefghjkVWlTUmTUVWXYZ[\]^_`abcdefghijklm[\_(c) Fumiaki Kinoshita 2015BSD3'Fumiaki Kinoshita <fumiexcel@gmail.com> experimental non-portableNone!"&'(+234=HJKMTnWrap a type that has a kind * -> *.qAlias for plain sumsrAlias for plain productssO(log n) Add a plain value to a product.tExtract a plain value.uEmbed a plain value.v)Naive pattern matching for a plain value.wO(log n)' A lens for a plain value in a product.xO(log n)' A lens for a plain value in a product.y#Prepend a clause for a plain value.z+Prepend a clause for a parameterized value.{%An accessor for newtype constructors.|8Generate newtype wrappers and lenses from type synonyms. decFields [d|type Foo = Int|]  Generates: Tnewtype Foo = Foo Int foo :: (Foo " xs) => Lens' (AllOf xs) Int foo = accessing Foo }|! with additional deriving clausesnopqrstuvwxyz{|}nopqrstuvwxyz{|}rqstuvwxynopz{|}nopqrstuvwxyz{|}svyz(c) Fumiaki Kinoshita 2015BSD3'Fumiaki Kinoshita <fumiexcel@gmail.com> experimental non-portableNone!"&'(+234=HJKM~A lens for a specific clause.$Applies a function to the result of  .O(log n) Perform pattern matching.Flipped ~ ~ ~~(c) Fumiaki Kinoshita 2015BSD3'Fumiaki Kinoshita <fumiexcel@gmail.com> experimental non-portableNone!"&'(+234=HJKMFlipped Qhttp://hackage.haskell.org/package/kan-extensions/docs/Data-Functor-Coyoneda.htmlCoyoneda A union of * -> * types.O(log n) Embed a value. for the content.Prepend a clause for   ( x) as well as (<?!). fast fmap (c) Fumiaki Kinoshita 2015BSD3'Fumiaki Kinoshita <fumiexcel@gmail.com> experimental non-portableNone!"&'(+234=HJKMFlipped Whttp://hackage.haskell.org/package/kan-extensions-4.1.0.1/docs/Data-Functor-Yoneda.htmlYoneda)A much more efficient representation for Union of s.O(log n) Embed a functor.Fuse " to retract a substantial functor. for the content.Prepend a clause for   ( x) as well as (<?!). fast fmap  (c) Fumiaki Kinoshita 2015BSD3'Fumiaki Kinoshita <fumiexcel@gmail.com> experimental non-portableNone!"&'(+234=HJKM ys contains xsUnicode alias for 'Reify the inclusion of type level sets. O(m log n) Select some elements.!A lens for a subset (inefficient)O(log n) Embed to a larger union.The inverse of .,Extend a product and fill missing fields by .)Narrow the range of the sum, if possible. -./013>@AB>B301A/.-@ None!"&'()+2346=HJKM%Composition for a class and a wrapperForall upon a wrapper  (c) Fumiaki Kinoshita 2015BSD3'Fumiaki Kinoshita <fumiexcel@gmail.com> experimental non-portableNone!"&'(+23468=HJKM "An internal class to characterize +A ghostly type which reifies the field name4When you see this type as an argument, it expects a A. This type is used to resolve the name of the field internally. FieldLens s- is a type of lens that points a field named s.  s = (s " xs) => Lens' ( xs) ( s) 1The type of records which contain several fields.The type of fields.%Associates names with concrete types.#Annotate a value by the field name.Lifted ()Generate a field.  "foo" [t|Int|] defines: =type instance FieldValue "foo" = Int foo :: FieldLens "foo" The yielding field is a  Jhttp://hackage.haskell.org/package/lens/docs/Control-Lens-Lens.html#t:LensLens. ;[recordType|foo bar baz|] --> Record '["foo", "bar", "baz"] Shows in field @= value" style instead of the derived one.*-./0138:>@AB[\\[8: (c) Fumiaki Kinoshita 2015BSD3'Fumiaki Kinoshita <fumiexcel@gmail.com> experimental non-portableNone!"&'(+234=HJKM -./01389:>@ABKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvvwxyz{|}~             F extensible-0.3.1Data.Extensible.Internal.RigData.Extensible.InternalData.Extensible.SumData.Extensible.ProductData.Extensible.PlainData.Extensible.MatchData.Extensible.UnionData.Extensible.LeagueData.Extensible.InclusionData.Extensible.DictionaryData.Extensible.RecordData.Extensible MergeList getMergedNullableEineNullCompgetCompMatchrunMatchConst' getConst'K0getK0Lens'viewviewsovercompnullable mapNullable$fMonoidMergeList$fShowK0 $fMonadK0$fApplicativeK0MergeConcat++MapMapSuccSuccToInttheIntNatSDNatDNatZeroTailHalfLookupCheck AmbiguousMissing ExpectingMember membershipHead∈NavHereHere LookupTree lookupTree:*TreeNilDiv2Pred ListIndex Membership getMemberIdordremember runMembershipcompareMembershipnavigateherenavNextnavLnavR lemmaHalfTail lemmaMerging:|UnionAthoistembedstrikestrikeAt<:|exhaustpickedForall hgenerateForGenerate hgeneratehheadhtailhuncons<:*<:hmaphtrans*++*hzipWith hzipWith3hfoldMap htraverse hsequencehcollect hdistributehlookuphindex hmapWithIndexsectorsectorAt htabulate htabulateForK1getK1OneOfAllOf<%pluckbury<%|recordrecordAtmkField recordTypeghc-prim GHC.TypesWord Remembrance$fToIntNatSDNat$fToIntNatDNat$fToIntNatZero $fMemberkxsx$fOrdMembership$fEqMembership$fShowMembership$fLookupTreekDNat:x$fLookupTreekSDNat:x$fLookupTreekZero:xbaseData.Type.Equalityouterinnerapply gcastWithcastWithtranssymRefl:~: testEquality TestEquality== Data.Proxy asProxyTypeOfProxyKProxyGHC.BaseidGHC.ListzipWithzipWith3 Control.Monadsequence $fForallkc: $fForallkc[] $fGeneratek: $fGeneratek[]fmap$fFunctorUnionFunctor $fShowField$fLabelableksLabelPhantom$fLabelableks(->)