[Haskell-cafe] distinguish functions from non-functions in a
class/instances
Philipp N.
philipp.neubeck at web.de
Fri Dec 7 02:50:35 EST 2007
Ryan Ingram wrote:
>
> No, that doesn't work; it's close, but not quite. liftM doesn't have the
> right type signature.
>
> liftM :: Monad m => (a -> r) -> (m a1 -> m r)
>
> What would work is if you could define a function
> liftLast :: Monad m => (a0 -> a1 -> ... -> aN -> r) -> (a0 -> a1 -> ... ->
> aN -> m r)
>
> then
>
> nary' f = runIdentity . nary (liftLast f)
>
> -- ryan
>
>
I don't see a way to implement liftLast or nary for functions like (a -> b
-> ... -> r) where r is not of the form (m s).
Of course one can use the Identity Monad for m, but in either case you have
to modify functions like (Int -> Int) to something like (Int -> m Int) for a
fixed type m (e.g. Identity).
-- philipp n.
--
View this message in context: http://www.nabble.com/distinguish-functions-from-non-functions-in-a-class-instances-tf4952209.html#a14208302
Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com.
More information about the Haskell-Cafe
mailing list