Hi Robin,
Suppose you have the requirement that a certain feature of your
software be disable-able at compile time, to avoid having to pull in
certain dependencies (which may not be available on all platforms).
Disabling a feature may entail removing certain fields from certain
constructors (again, to avoid pulling in certain dependencies), and/or
removing certain functions from certain modules. What is the best way to
do this in Haskell?
This problem description suggests that perhaps insights from
Aspect-Oriented Programming and/or Software Product Lines may be
relevant. However, I haven't heard of much work that relates these
concepts to Haskell. Maybe this would be a good topic for an
enterprising student?