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 <[EMAIL PROTECTED]> wrote:
> 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

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to