úÎ]?W@      !"#$%&'()*+,-./0123456789:;<=>?None&!"&(*+-0123468;=?BEGHIJKMTU@IRun a parser on a given input, lifting its errors to the context parser.Consider it a subparser.Arun type' "(Int, Char)"MRight (Type_App (Type_App (Type_Tuple 2) (Type_Con "Int")) (Type_Con "Char"))run type' "(,) Int Int"LRight (Type_App (Type_App (Type_Tuple 2) (Type_Con "Int")) (Type_Con "Int"))run type' "(,)"Right (Type_Tuple 2)run type' "()"Right (Type_Tuple 0)run type' "Int -> Double"KRight (Type_App (Type_App Type_Arrow (Type_Con "Int")) (Type_Con "Double"))run type' "(->) Int Double"KRight (Type_App (Type_App Type_Arrow (Type_Con "Int")) (Type_Con "Double"))run type' "A -> B -> C"tRight (Type_App (Type_App Type_Arrow (Type_Con "A")) (Type_App (Type_App Type_Arrow (Type_Con "B")) (Type_Con "C")))B run exp "(,)"Right (Exp_TupleCon 2)run exp "(1,2)"^Right (Exp_App (Exp_App (Exp_TupleCon 2) (Exp_Lit (Lit_Integer 1))) (Exp_Lit (Lit_Integer 2))) run exp "(1)"Right (Exp_Lit (Lit_Integer 1)) run exp "()"Right (Exp_TupleCon 0)C Integers get parsed as integers: run lit "2"Right (Lit_Integer 2)"Rationals get parsed as rationals: run lit "2.0"Right (Lit_Rational (2 % 1)) run lit "3e2"Right (Lit_Rational (300 % 1)).DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`@abAcdefghijklmBC.DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`@abAcdefghijklmBCDHGFEIJ SRQPONMLKTUVWX_^]\[ZY`@abAcdefghijklmBCNone&!"&(*+-0123468;=?BEGHIJKMTU!A reference from a datastructure s to its some part al, which can be used to manipulate that particular part. It is possible to change the part to another type a'O during updates. In such case the whole datastructure will change the type to s' as well.ZGiven a lens to a subpart and a datastructure, produce the value of the referred subpart.eGiven a lens to a subpart, a new value for it and a datastructure, produce an updated datastructure.oGiven a lens to a subpart, and an update function for it, produce a function, which updates the datastructure.None(!"&(*+-0123468;=?BEGHIJKMTUA specialised version of Data.Proxy.Proxy5. Defined for compatibility with "base-4.6", since Proxy was only defined in "base-4.7".XA simplified field constraint, which excludes the possibility of type-changing updates.uDefines a lens to manipulate some value of a type by a type-level name, using the string type literal functionality.KInstances are provided for all records and for tuples of arity of up to 24.&Here's how you can use it with tuples: Xtrd :: Field "3" v v' a' a => a -> v trd = view . fieldLens (FieldName :: FieldName "3")JThe function above will get you the third item of any tuple, which has it.A polymorphic lens. E.g.: eageLens :: Field "age" v v' a' a => Lens a a' v v' ageLens = fieldLens (FieldName :: FieldName "age")8  !"#$%&'()*+,-./0123456789:;4  !"#$%&'()*+,-./01234567ÿ¤67452301./,-*+()&'$%"# !  888888888888888888888888::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;    !"#$%&'()*+,-./0123456789:;None&!"&(*+-0123468;=?BEGHIJKMTU<A shorthand alias to >.=A shorthand alias to ?.>dA quasiquoter, which generates record expressions and types, depending on the context it's used in.,Here is how you can use it to declare types: btype Person = [record| {name :: String, birthday :: {year :: Int, month :: Int, day :: Int}} |]To declare functions: 9getAge :: [record| {name :: String, age :: Int} |] -> IntTo declare values: ‹person :: Person person = [record| {name = "Grigori Yakovlevich Perelman", birthday = {year = 1966, month = 6, day = 13}} |]?!A quasiquoter, which generates a L. Lens is your interface to accessing and modifying the fields of a record.Here is how you can use it: sgetPersonBirthdayYear :: Person -> Int getPersonBirthdayYear = Record.Lens.view ([lens|birthday|] . [lens|year|])IFor your convenience you can compose lenses from inside of the quotation: psetPersonBirthdayYear :: Int -> Person -> Person setPersonBirthdayYear = Record.Lens.set [lens|birthday.year|]FYou can also use this function to manipulate tuples of arity up to 24: ~mapThirdElement :: (Char -> Char) -> (Int, String, Char) -> (Int, String, Char) mapThirdElement = Record.Lens.over [lens|3|]n`Allows to specify names in types signatures, leaving the value type resolution to the compiler.E.g., l(\_ v1 _ v2 -> Record2 v1 v2) :: Types.FieldName n1 -> v1 -> Types.FieldName n2 -> v2 -> Record2 n1 v1 n2 v2[We can set the name signatures by passing proxies with explicit signatures to this lambda.<=>?opqrstuvwn<=>?>?<=<=>?opqrstuvwnx        !!""##$$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX,YZ[\]^_`abc record-0.3.1 Record.Lens Record.TypesRecord Record.ParserLensviewsetover FieldNameField'Field fieldLensRecord24Record23Record22Record21Record20Record19Record18Record17Record16Record15Record14Record13Record12Record11Record10Record9Record8Record7Record6Record5Record4Record3Record2Record1$fStorableRecord1$fField"1"IdentityIdentityv1v1'$fFieldn1Record1Record1v1v1'$fField"1"(,)(,)v1v1'rlrecordlensparsertype'explitLit Lit_Rational Lit_Integer Lit_StringLit_Char RecordExpExpExp_SigExp_ListExp_AppExp_LitExp_Nil Exp_TupleConExp_ConExp_Var Exp_RecordIdent RecordType QualifiedNameType Type_Record Type_List Type_Arrow Type_TupleType_ConType_VarType_Apprunlabeledqq recordTypequalifiedName1inBraces lowerCaseName upperCaseName symbolicIdent stringLitcharLitlowerCaseIdentupperCaseIdent conLambdaExp renderLensrenderSingleLensrenderRecordTyperecordTypeNameByArityrecordConNameByArity renderType renderExprenderRecordExp renderLit