úΟvk¶      !"#$%&'()*+,-./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. % :: 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!"&'(+2346=HJKMT ..A type sugar to make type error more readable./.A type sugar to make type error more readable.0.A type sugar to make type error more readable.1 Member x xs or x " xs indicates that x is an element of xs.3Unicode flipped alias for 14!Ensure that the first element of xs is x6The position of x in the type level set xs.7 Generates a 62 that corresponds to the given ordinal (0-origin).8/Embodies a type equivalence to ensure that the 6 points the first element.9PRIVILEGED: Compare two 6s.:PRIVILEGED: Navigate a tree.?GHC can't prove this@GHC can't prove this, !"#$%&'()*+,-./0123456¶789:;<=>?@·¸¹º»¼½¾4¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ !"#$%&'()*+,-./0123456789:;<=>?@#689745:;<=>123'*)(%&$#",+?@ !-0/.% !"#$%&'*)(+,-./0123456¶789:;<=>?@·¸¹º»¼½¾ None!"&'(+234=HJKMABCDEABCDEACBDEACBDEB(c) Fumiaki Kinoshita 2015BSD3'Fumiaki Kinoshita <fumiexcel@gmail.com> experimental non-portableNone!"&'(*+234=HJKMFThe extensible sum typeHChange the wrapper.IO(log n) lift a value.JO(1) Naive pattern matchKThere is no empty union.L3A traversal that tries to point a specific element.FGHIJKLFGHIJKLFGHIJKLFGHIJKLJ(c) Fumiaki Kinoshita 2015BSD3'Fumiaki Kinoshita <fumiexcel@gmail.com> experimental non-portableNone!"&'(*+2346=HJKMM4Guarantees the all elements satisfies the predicate.NO(n) Analogous to P!, but it also supplies a context c x for every elements in xs.OSGiven a function that maps types to values, we can "collect" entities all you want.PO(n)- generates a product with the given function.QThe extensible product typeTO(1) Extract the head element.UO(n)6 Extract the tail of the product. FIXME: unsafeCoerceV)Split a product to the head and the tail.WAn alias for (X).XO(log n) Add an element to a product.Y<Transform every elements in a product, preserving the order.Z<Transform every elements in a product, preserving the order.[Combine products.\Ð for heterogeneous product]Ñ for heterogeneous product^Combine all elements._Traverse all elements.`O(log n) Pick up an elemtnt.aY with its indices.bO(log n) A lens for a specific element.cO(log n)( A lens for a value in a known position.dTurn a product into A.eBuild a product from A.MNOPQRSTUVWXYZ[\]^_`abcdeÒÓÔÕMNOPQRSTUVWXYZ[\]^_`abcdeQSRXW[TUVYZ\]^_a`bcOPMNedMNOPQSRTUVWXYZ[\]^_`abcdeÒÓÔÕWX[(c) Fumiaki Kinoshita 2015BSD3'Fumiaki Kinoshita <fumiexcel@gmail.com> experimental non-portableNone!"&'(+234=HJKMT fWrap a type that has a kind * -> *.iAlias for plain sumsjAlias for plain productskO(log n) Add a plain value to a product.lExtract a plain value.mEmbed a plain value.n)Naive pattern matching for a plain value.oO(log n)' A lens for a plain value in a product.pO(log n)' A lens for a plain value in a product.q#Prepend a clause for a plain value.r+Prepend a clause for a parameterized value.s%An accessor for newtype constructors.t8Generate 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 fghijklmnopqrstufghijklmnopqrstujiklmnopqfghrstufghijklmnopqrstuknqr(c) Fumiaki Kinoshita 2015BSD3'Fumiaki Kinoshita <fumiexcel@gmail.com> experimental non-portableNone!"&'(+234=HJKMvA lens for a specific clause.w$Applies a function to the result of  .xO(log n) Perform pattern matching.yFlipped xvwxy vwxy vxwyvwxyy(c) Fumiaki Kinoshita 2015BSD3'Fumiaki Kinoshita <fumiexcel@gmail.com> experimental non-portableNone!"&'(+234=HJKMzFlipped 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   (z x) as well as (<?!).× fast fmap z{|}~€×z{|}~€|}~z{€z{|}~€× None!"&'(+2346=HJKM‚%Composition for a class and a wrapper‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“” ‚ƒ„…†‡ˆ‰Š‹Œˆ‰Š‹„…†‡Œ”“’‘Žƒ‚‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“” (c) Fumiaki Kinoshita 2015BSD3'Fumiaki Kinoshita <fumiexcel@gmail.com> experimental non-portableNone!"&'(+234=HJKM•Flipped 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 xs¡Unicode alias for  ¢'Reify the inclusion of type level sets.£ O(m log n) Select some elements.¥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.  ¡¢£¤¥¦§¨./0123678 ¡¢£¤¥¦§¨683120/.7¡ ¢£¤¥¦§¨  ¡¢£¤¥¦§¨ (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 name¬4When 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.´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.Ù Shows in field @= value" style instead of the derived one.©ª«¬­®¯°±²³´µÚÛÙ(./0123678QSWX ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ®XWQS³´µ¯°±²­¬©ª« ©ª«¬­®¯°±²³´µÚÛÙ³ (c) Fumiaki Kinoshita 2015BSD3'Fumiaki Kinoshita <fumiexcel@gmail.com> experimental non-portableNone!"&'(+234=HJKMp ./0123678FGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€•–—˜™š›œž ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µÜ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnnopqrstuvwxyz{|}~€‚‚ƒ„…† ‡ ˆ ‰ ‰ Š ‹ Œ Ž ‘ ’ “ ” • – — ˜ ™ ™ š › › œ ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ± ² ³ ´ µ ¶>·¸¹º»¼½¾¿ÀÁ¿À¿ÀÿÀÄ¿ÀÅ¿ÀÆ¿ÀÇ¿ÀÈ¿ÀÉ¿ÀÊ¿ÀË¿ÀÌ¿ÍοÍÏ¿ÍÏ¿ÍпÍпÑÒ¿ÑÓÔÕÖ׿ØÙÚ¿ØÛ Ü Ý Þßextensible-0.2.8Data.Extensible.Internal.RigData.Extensible.InternalData.Extensible.Internal.HListData.Extensible.SumData.Extensible.ProductData.Extensible.PlainData.Extensible.MatchData.Extensible.UnionData.Extensible.DictionaryData.Extensible.LeagueData.Extensible.InclusionData.Extensible.RecordData.Extensible MergeList getMergedPairNullableEineNullWrap2unwrap2MatchrunMatchConst' getConst'K0getK0Lens'viewviewsovernullable mapNullable$fMonoidMergeList$fShowK0 $fMonadK0$fApplicativeK0MergeConcat++MapMapSuccSuccLookupToInttheIntNatSDNatDNatZeroTailHalfCheck AmbiguousMissing ExpectingMember membership∈NavHereHere Membershipord runMembershipcompareMembershipnavigateherenavNextnavLnavR lemmaHalfTail lemmaMergingHListHConsHNilmergesplit:|UnionAthoistembed<:|exhaustpickedForall generateForGenerategenerate:*TreeNilhheadhtailhuncons<:*<:hmaphtrans*++*hzipWith hzipWith3hfoldMap htraversehlookup htabulatesectorsectorAttoHList fromHListK1getK1OneOfAllOf<%pluckbury<%|recordrecordAt)