
On Thu, 02 Nov 2006, Malcolm Wallace
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