úÎJ Ep>      !"#$%&'()*+,-./0123456789:;<= The accessor function we use, %has a record value as first argument 3and returns the content of a specific record field Eand a function that allows to overwrite that field with a new value. In former version of a package 3we used a function that resembled the state monad.  However this required to use an > in the implementation of the get function. ?@AB?@AB?@?@ABIf an object is wrapped in a newtype, you can generate an Accessor to the unwrapped data 2by providing a wrapper and an unwrapper function. *The set function is simpler in this case, %since no existing data must be kept. OSince the information content of the wrapped and unwrapped data is equivalent, $you can swap wrapper and unwrapper. This way you can construct an Accessor :that treats a record field containing an unwrapped object *like a field containing a wrapped object.  newtype A = A {unA :: Int}   access :: Accessor.T A Int  access = fromWrapper A unA Access the record itself (Access a (non-existing) element of type () result a/ accesses the value of a function for argument a. &Also see semantic editor combinators, @that allow to modify all function values of a function at once. Cf.  8http://conal.net/blog/posts/semantic-editor-combinators/ Set the value of a field.  as infix operator. This lets us write %first ^= 2+3 $ second ^= 5+7 $ record. This is a general function, Obut it is especially useful for setting many values of different type at once. Get the value of a field.   as infix operator. This lets us write record^.field^.subfield.  This imitates Modula II syntax. /Transform the value of a field by a function.   as infix operator. This lets us write field^:subfield^:(2*) $ record, record$%field^:subfield^:(2*) or "record$%field^:subfield^:(const 1). Flipped version of '($)'. Accessor composition: 5Combine an accessor with an accessor to a sub-field. Speak "stack". *Accessor composition the other direction.   (<.) = flip (.>) You may also use the (.) operator from Category class.     2Modify a record element and return its old value. 2Modify a record element and return its new value. Infix variant of . Infix variant of .     *Treats a finite map like an infinite map, >where all undefined elements are replaced by a default value. *Treats a finite map like an infinite map, !where all undefined elements are C and defined elements are D. E    !&Access to the first value of a pair. "'Access to the second value of a pair. #(Access to the first value of a triple. $)Access to the second value of a triple. %(Access to the third value of a triple. !"#$%!"#$%!"#$%&'()*+,-./0123&'()*+,-./01231/0-.+,)*&'(23&'('()**+,,-../00123 FExample of using set, get, modify. GHIJKLMNOPQRSTModify a value of the U function. V&Modify a value of a curried function. WXYFGHIJKLMNOPQRSTVWXYFGHIJKLMNOPQRSTVWXY 4An  Accessor r a" is an object that encodes how to  get and put a subject of type a out of/into an object  of type s. 0In order for an instance of this data structure a to be  an 4#, it must obey the following laws:  getVal a (setVal a x r) = x  setVal a (getVal a r) r = r 5 Construct an 4 from a get and a set method.  get method  set method 6AGet a value from a record field that is specified by an Accessor record field record "value of the field in the record 7?Set a value of a record field that is specified by an Accessor record field f value x to be set original record new record with field f changed to x 8Accessor composition: 5Combine an accessor with an accessor to a sub-field. Speak "stack". 9*Accessor composition the other direction.   (<.) = flip (.>) You may also use the (.) operator from Category class. :An "assignment operator" for state monads.  (=:) = putA ;4A structural dereference function for state monads. <3A structural assignment function for state monads. =5A structural modification function for state monads.  456789:;<=4576 ;<:=89 456789:;<=Z           !"#$%&'()*+,-../012345678'9:;<=>?@ABCDEFBGHBGIJ K L M N O P Q R S T U V   BWX Y " # $Zdata-accessor-0.2.1.8Data.Accessor.BasicData.Accessor.MonadStateData.Accessor.ContainerData.Accessor.ShowData.Accessor.TupleData.Accessor.BinaryRead Data.AccessorData.Accessor.PrivateData.Accessor.MonadStatePrivateData.Accessor.ExampleT fromSetGetfromLens fromWrapperselfnullresultset^=composeget^.modify^:$%.><. getAndModify modifyAndGet%=%:liftliftTarray mapDefaultmapMaybe intMapDefault intMapMaybefield showsPrecfirstsecondfirst3second3third3Parser runParserByteCompatibletoByte ByteStreamgetWord8 ByteSource readWord8CanyStreamrecordAccessoraccessorgetValsetVal=:getAputAmodAbaseGHC.Err undefinedConsdecons Data.MaybeNothingJusttoMaybeplaininit initInfixreadinfix0infix1infix2infix3infix4 showsPairshow0show1GHC.Baseordresult2