úΞ. Safe-InferredHMPurposeA value of type  Lens s t a b provides the following:A reference into the structure s to read and update the value a inside it.&The possibility to change the type of s to t and the type of a to b.The Functor constraint8Operations may do something more interesting inside the fQ functor. For the purpose of this module and package, all the functions below (, , E) use a no-op functor and therefore the above type is equivalent to: (type Lens s t a b = (a -> b) -> (s -> t)GBut it is left generic for forward compatibilty with the lens package.Example »> data Person = Person Char Int deriving Show »> let _age f (Person x a) = fmap (\b -> Person x b) (f a) »> view _age (Person a" 10) 10 »> over _age (+1) (Person a 10) Person a 11 »> set _age 100 (Person a 10) Person a 100 »> Laws1) Get-Put: You get back what you put in. view l (set l v s) "a v2) Put-Get4: Putting back what you got doesn't change anything. set l (view l s) s "a s3) Put-Put: Setting is idempotent. set l v (set l v s) "a set l v sGet the a inside the s. Modify the a inside the s$, optionally changing the types to b and t.Set the a inside the s#, optionally changing the types to b and t. Could use  DeriveFunctor here but that's not portable. basic-lens-0.0.0Control.Lens.BasicLensviewoverset $fFunctorIdIdrunId