
The type doesn't actually indicate that the type m supports a return
operation. I introduced the qualifier that it was a functor. You
implicity introduced the constraint that it is a monad (actually a
"pointed functor", but that's a Monad's return operator). With that
constraint, your thought process seems fine to me.
On 2/27/07, Bryan Burgers
Since my last query was answered so quickly, let's try another.
I have looked on Hoogle. I would have asked Djinn, but I don't have it around. So, can someone find a term that inhabits (forall a. a -> b) -> (forall a. m a -> m b) ? I think of this as the type of functions that, given a function from any boxed-up a to a b, will give me a function from a boxed-up ma to a m b -- m does not have to be a Monad!.
Jacques
(Jacques, sorry you got this twice--I forgot to send it to the list.)
How about this one? f g x = return $ g x
Since 'g' can, by definition, take any type and return a 'b', then it should be able to take some 'm a' and return something of type 'b', which we just return.
I'm not really familiar with foralls, but the two explicit foralls make the two a's different, right?
(After reading the other responses, I must be wrong, but can somebody explain why?)
Bryan Burgers _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe