[Haskell-beginners] arrow type signature question

MH mhamro at gmail.com
Thu Nov 18 12:51:32 EST 2010


Oh, so this signature is really a partial application that expects another
parameter to be executed.
So
resultFun   :: (h b -> h b') -> (h (a->b) -> h (a->b'))
is
foo :: h b -> h b'
bar :: h (a->b) -> h (a->b')

firstFunction = resultFun foo
result = firstFunction bar

Is this correct?

On Thu, Nov 18, 2010 at 10:52 AM, Daniel Fischer
<daniel.is.fischer at web.de>wrote:

> On Thursday 18 November 2010 16:07:34, MH wrote:
> > I am looking at signatures for Arrow and Composable classes and I cannot
> > understand some of them. Could you please explain me the following:
> > Let's take for example the following:
> >
> > class FunAble h => FunDble h where
> >   resultFun   :: (h b -> h b') -> (h (a->b) -> h (a->b'))
> >
> > class FunAble h where
> >   secondFun :: (h b -> h b') -> (h (a,b) -> h (a,b')) -- for 'second'
> >
> >
> > in the signatures:
> > resultFun   :: (h b -> h b') -> (h (a->b) -> h (a->b'))
> > secondFun :: (h b -> h b') -> (h (a,b) -> h (a,b'))
> >
> > if (h b -> h b') is the input of these functions where does 'a' comes
> > from in the output?
>
> 'a' is arbitrary, so it works for all 'a'. The result of resultFun foo,
> resp. secondFun foo is a function of type
>
> h (a -> b) -> h (a -> b')
>
> resp.
>
> h (a,b) -> h (a,b')
>
> where the types b and b' have been determined by foo (not necessarily
> completely, if foo is id, all that has been determined is that b' = b) and
> 'a' is still arbitrary. The type variable 'a' is fixed or restricted when
> xxxFun gets its second argument, bar in
>
> resultFun foo bar
>
> resp.
>
> secondFun foo bar.
>
> >
> > Thanks,
>
> HTH,
> Daniel
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/beginners/attachments/20101118/bebeb951/attachment.html


More information about the Beginners mailing list