On Thu, 3 Jul 2008, Dougal Stanton wrote:
Here's a snippet from the parser for one option (others omitted for clarity):options :: [OptDescr (Opts -> Opts)] options = [ Option "b" ["bus"] (ReqArg busNum "NUM") "Bus number" , ... ] where busNum n os = let b = (query os) { queryBusNumber = Just n } in if isBusId n then os { query = b } else osVariations on that ugliness are repeated four times for other fields. Is there an alternative way to change the value of nested fields?
For access to nested record fields I implemented the record-access package. Unfortunately the field accessors must still be written manually.
http://darcs.haskell.org/record-access/src/Data/Accessor/Example.hs E.g.: infix2 :: ((Char, Int), String) infix2 = (('b',7),"hallo")$%first^:second^=10 (second^=10) replaces the second member of pair with a value. (^:) applies that change to the outer record (again a pair). ($%) applies the modifier (first^:second^=10) to a concrete pair. _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
