[Haskell-cafe] What inhabits this type: (forall a. a -> b) ->
(forall a. m a -> m b)
nicolas.frisby at gmail.com
Tue Feb 27 18:20:52 EST 2007
At the risk of seeming terribly naive, I'm going to go ahead and share
Would not any function of type (forall a. a -> b) be a constant
function in b? If the function is allowed no inspection of its
argument, it must not depend on its argument.
The same intuition could be applied to the codomain. The type (forall
a. m a -> m b) would tell me that this function is not allowed to
inspect the carrier of its input type. I would need to know more about
the type variable m in order to suggest what this function could do.
E.G. if m were required to be a functor, then the function could be:
theFun :: Functor m => (forall a. a -> b) -> (forall a. m a -> m b)
theFun f m_a = fmap f m_a
Is this the sort of pondering you were after? Gurus: did I miss something?
On 2/27/07, Jacques Carette <carette at mcmaster.ca> 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!.
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
More information about the Haskell-Cafe