úÎFd@kA      !"#$%&'()*+,-./0123456789:;<=>?@None&!"&(*+-0123468;=?BEGHIJKMTU*ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij*ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijAEDCBFG PONMLKJIHQRST[ZYXWVU\]^_`abcdefghijNone&!"&(*+-0123468;=?BEGHIJKMTU!A reference from a datastructure s to some part a8, which can be used to manipulate that particular part.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.Proxy6. Defined for compatibility with "base-4.6", since Proxy was only defined in "base-4.7".fDefines a way to access some value of a type as a field, 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: Gtrd :: FieldOwner "3" v a => a -> v trd = getField (Field :: Field "3")JThe function above will get you the third item of any tuple, which has it. Generate a lens using the  instance. RageLens :: FieldOwner "age" v a => Lens a v ageLens = lens (Field :: Field "age") 9  !"#$%&'()*+,-./0123456789:;<6  !"#$%&'()*+,-./0123456789ÿŽ 8967452301./,-*+()&'$%"# ! ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<    !"#$%&'()*+,-./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|]k`Allows to specify names in types signatures, leaving the value type resolution to the compiler.E.g., d(\_ v1 _ v2 -> Record2 v1 v2) :: Types.Field n1 -> v1 -> Types.Field n2 -> v2 -> Record2 n1 v1 n2 v2[We can set the name signatures by passing proxies with explicit signatures to this lambda.=>?@lmnopqrstk=>?@?@=>=>?@lmnopqrstku        !!""##$$%%&'()*+ ,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQ RSTUVWXYZ[\]^ record-0.1.0 Record.Lens Record.TypesRecord Record.ParserLensviewsetoverField FieldOwnersetFieldgetFieldlensRecord24Record23Record22Record21Record20Record19Record18Record17Record16Record15Record14Record13Record12Record11Record10Record9Record8Record7Record6Record5Record4Record3Record2Record1$fFieldOwner"1"v1Identity$fFieldOwnern1v1Record1$fFieldOwner"1"v1(,)rlrecordLit Lit_Rational Lit_Integer Lit_StringLit_Char RecordExpExpExp_SigExp_ListExp_AppExp_LitExp_Nil Exp_TupleConExp_ConExp_Var Exp_Record RecordType QualifiedNameType Type_Record Type_List Type_Arrow Type_TupleType_ConType_VarType_Apprunlabeledqqtype' recordTypequalifiedName1inBraces lowerCaseName upperCaseName symbolicIdent stringLitcharLitexplit conLambdaExp renderLensrenderSingleLensrenderRecordTyperecordTypeNameByArityrecordConNameByArity renderType renderExprenderRecordExp renderLit