I'm also rather against `mux`, not only on partiality grounds, but also on the grounds that it is not very easily optimized away.


On Wed, Sep 11, 2013 at 2:23 PM, Henning Thielemann <lemming@henning-thielemann.de> wrote:

On Wed, 11 Sep 2013, Greg Fitzgerald wrote:

I'd prefer something more like:

   mux :: Enum b => [a] -> b -> a
   mux xs x = xs !! fromEnum x

so then 'bool' could be implemented as:

   bool :: a -> a -> Bool -> a
   bool f t = mux [f, t]

but 'mux' needs a stronger type signature.  The size of the enum is
known at compile-time.  Is there any way to constrain the input list

I don't like a total function to be implemented using a non-total function (!!). Additionally your implementation relies on fromEnum True == 1, which is a bad thing.

_______________________________________________
Libraries mailing list
Libraries@haskell.org
http://www.haskell.org/mailman/listinfo/libraries