On Thu, 02 Nov 2006, Malcolm Wallace <Malcolm.Wallace@cs.york.ac.uk> wrote:
However, the "Control." hierarchy is certainly the wrong place for it. The very name Control is intended to suggest things that are slightly outside the usual functional domain - more in the region of imperative control structures.
In that case, why do we have Control.Applicative, Control.Arrow etc., which are purely functional? The only non-functional libraries are those that involve the IO or ST monads (Control.Concurrent, Control.Exception, Control.Monad.ST, etc.). Personally I prefer Data.Function (to match Data.Tuple, etc.), but it doesn't really seem to match the current division between Data and Control. Many nice little combinators (like (&&&) and (***)) can be found in Control.Arrow, for instance. -- /NAD