úÎ3+-Û1      !"#$%&'()*+,-./0+Heterogenous stack with a head and a tail. #Bidirectional partial isomorphism. 'Apply an isomorphism in one direction. Inverse of an isomorphism. :Apply an isomorphism as many times as possible, greedily. 1 Convert to a stack isomorphism. "Convert from a stack isomorphism. Swap the top two arguments. 2Introduce a head value that is passed unmodified. Push or pop a specific value.  Inverse of  . IWhen converting from left to right, push the default value on top of the H stack. When converting from right to left, pop the value, make sure it , matches the predicate and then discard it. ’When converting from left to right, push the default value on top of the stack. When converting from right to left, pop the value and discard it.    @Derive partial isomorphisms for a given datatype. The resulting L expression is a tuple with one isomorphism element for each constructor in  the datatype.  For example:  ! nothing :: Iso t (Maybe a :- t) ( just :: Iso (a :- t) (Maybe a :- t) ) (nothing, just) = $(deriveIsos ''Maybe) (Deriving isomorphisms this way requires -XNoMonoPatBinds. 2345G6789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^ +Convert values of a type to and from JSON. _`a -Convert any Aeson-enabled type to a grammar. ! Introduce b7 as possible value. First gives the argument grammar a  chance, only yielding b or c" if the argument grammar fails to  handle the input. " Introduce b- as possible (greedy) value. Always converts c to  bB and vice versa, even if the argument grammar knows how to handle  these values. #GConvert between a JSON array and Haskell list of arbitrary lengts. The 4 elements are converted using the argument grammar. $`Wrap a bunch of elements in a JSON array. For example, to match an array of exactly length two:   array (element . element) Or to match an empty array:  array id %8Describe a single array element with the given grammar. d&;Describe a property with the given name and value grammar. e'Expect a specific key/ value pair. (*Collect all properties left in an object. )kMatch and discard all properties left in the object. When converting back to JSON, produces no properties. *DWrap an exhaustive bunch of properties in an object. Typical usage: $ object (prop "key1" . prop "key2") f+Convert from JSON. ,Convert to JSON. -Expect/produce a specific JSON g. .:Describe a property whose value grammar is described by a  instance. /Expect a specific key/ value pair. 0<Describe a single array element whose grammar is given by a   instance.  !"#$%&'()*+,-./0 !"#%$&'()*+,-./0 !"#$%&'()*+,-./0h      !"#$%&'()*+,-./0123456789:;<:;=:;=:;>:;?:;?:;@:;A:;A:;B:;C:;C:;D:;E:;E:;F:;G:;GHIJHI%HIKHILHIMHINHIOHIOHIPHIQHIQHIRHISHISHITHIUHIUHIVHIWHIXHIYHIZHIZ[\]^_`:abcde^_fgJsonGrammar-0.2 Data.Iso.Core Data.Iso.THData.Iso.CommonLanguage.JsonGrammarData.Iso:-Isoconvertinversemanystackunstackswapducklit inverseLitmatchWithDefaultignoreWithDefault deriveIsosunittuptup3nothingjustmaybenilconsleftrighteitherfalsetrueboolJsongrammar liftAesonoption greedyOptionlistarray elementBypropBy rawFixedProprest ignoreRestobjectfromJsontoJsonlitJsonprop fixedPropelementhead deriveIsoderiveConstructorderiveDestructorconNamebase Data.MonoidgetDualDualappEndoEndogetAllAllgetAnyAnygetSumSum getProductProductsemigroups-0.5.0Data.Semigroupdiffsconcat<> SemigroupgetMinMingetMaxMaxgetFirstFirstgetLastLast unwrapMonoid WrapMonoid WrappedMonoid getOptionOptionaeObjectaeArrayaeNull aeson-0.3.2.7Data.Aeson.TypesNull Data.MaybeNothingvectorReverseListrawProp unsafeToJsonValue