Malcolm Wallace wrote:
Wolfgang Jeltsch <wolfgang@jeltsch.net> writes:
I'm not sure exactly what you have in mind. Obviously I want something that applies to all functions, with any number of arguments, and not just (+). Furthermore, it should handle cases like 1+[2,3] where only one value is monadic.
I doubt that it is a good thing to extend the language in a way that such far reaching declarations are automatically generated.
I agree. The original request was for something like [1,2] + [3,4] to be automatically lifted into a monad. But surely it is not too difficult to define the required behaviour precisely (and only) where needed, e.g.
(+.) = liftM2 (+)
[1,2] +. [3,4]
Why not make the monad an instance of Num, then you do not proliferate meaningless similar symbols... besides which I am sure all the good ones are used in libraries already (like +. <+> etc) ;) instance (Monad m, Show a) => Show (m a) ... instance (Monad m, Ord a) => Ord (m a) ... instance (Monad m, Num a,Show (m a),Ord (m a)) -> Num (m a) where (+) = liftM2 (+) The instances for Show and Ord can be empty if you don't need the functionality... Regards, Keean.