
Alternately, just go with a map initially with default values. Then parse the command line args into a second map (especially if they're all of a format like -argname argvalue). Then lookup your args file with the command line map, and failing that the default map. Then read the args file and finally merge all three maps in the proper order. No need for monoid instances, special data types or any of that, so at a little cost in elegance a much more succinct way to get what you want. As a final step, you can always project the map values into a record type, to get some safety for the rest of your program. The entire process, aside from creating the record, should probably be no more than four or so lines. --Sterl. On Sep 19, 2008, at 8:39 PM, Antoine Latter wrote:
On Fri, Sep 19, 2008 at 7:35 PM, Antoine Latter
wrote: I'm not sure how well it would hold up under maintenance, but you coud have a config sum-type which is itself a monoid, and then create two of them:
And by sum-type I mean product type. Sheesh.
Although having your config options in a sum-type packed into a Set, which is itself a Monoid is another option. Then you get 'mempty' and 'mappend' for free.
I think I saw a blog-post or something detailing this, but I don't have a book-mark.
-Antoine _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe