On 7/27/07, Eric Y. Kow <[EMAIL PROTECTED]> wrote:
> Solution #3 No lists, just records (lhs2TeX)
> ----------------------------------

> Advantages:
>   very convenient/compact; have to write
>     (i)   Flag type
>     (ii)  Settings record type/GetOpt in one go
>     (iii) default Settings
>   easy to lookup flags
>
> Disadvantages:
>   Not as flexible
>    - can't group flags into blocks and have different programs that use
>      different subsets of flags (without sharing the same Setting type)
>    - everything must go into Settings
>    - seems harder to say stuff like 'if flag X is set and flag Y are in
>      the list of Flags, then parameterise flag Z this way' or
>      'flags X and Y are mutually exclusive'

This is what I'm using for my current project. Most of the
disadvantages don't apply in my case, because all my flags are
largely-independent simulation parameters.

The one thing I find annoying, though, is that for each option I add,
I need to make changes in three places:

  1) The definition of my options record
  2) My default options value
  3) My list of GetOpt.OptDescr

What I'd really like to be able to do is specify the field name, field
type, and GetOpt info in a single place, without any redundancy. This
is obviously impossible in vanilla Haskell, so some kind of fancy
preprocessing or templating would be necessary. (Sadly, I'm not in a
position to pull this off right now.)


Stuart
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to