úÎ![ ¹   Bidirectional parsing(c) Mats Rauhala, 2020BSD-3mats.rauhala@iki.fi experimentalPOSIXSafe u bidirectional"The core bidirectional parser type See the module for usage example bidirectional"Return a value "a" in context "r". bidirectionalCGenerate a value "a" from the initial object "c" in the context "w" bidirectional Smart constructor for the parser bidirectional#Extract the decoder from the parser bidirectional#Extract the encoder from the parser bidirectionalRecord accessor helpervDue to the nature of the parser, the encoder gets the full record type, when it should only focus on a specific part. jdata Person = Person { name :: String, age :: Int } person :: IParser r w Person Person person = Person  $ name .= string  * age .= int  bidirectional The parser bidirectional The encoder    ,bidirectional-0.1.0.0-A1zpDHKWTqaBjaoqyS1OFE Data.IParserIParserdecoderencoderparserdecodeencode.=$fProfunctorIParser$fApplicativeIParser$fFunctorIParser