more flexible partial application

Sebastian Sylvan sebastian.sylvan at gmail.com
Mon Jan 23 13:49:28 EST 2006


On 1/23/06, Andres Loeh <loeh at iai.uni-bonn.de> wrote:
> > Are there any subtle reasons for why something like the following
> > couldn't be allowed?
> >
> >
> > > foo x y z w = ...
> > > bar x w = foo x _ _ w
> >
> > I.e. a more flexible version of partial application. This would be
> > translated too
> >
> > > bar x w = \y z -> foo x y z w
> >
> > I.e a function which takes the "_" parameters in the same order they
> > were encountered in the function application.
>
> I just want to make sure I understand this.
>
> What would
>
> > foo x y z = \w -> ...
> > bar x w = foo x _ _ w
>
> mean?
>
> > bar x w = \y z -> foo x y z w
>
> or
>
> > bar x w = (\y z -> foo x y z) w
>

I'm not sure. :-)
The first one seems to make more sense to me, but the second does make
sense as well. So maybe the expansion should occur at the application
site. I.e. walk along all the parameters to the function lifting each
_ to an outer lambda expression (a la the first one).

I'm not sure exactly the best way for this to behave.

/S
--
Sebastian Sylvan
+46(0)736-818655
UIN: 44640862


More information about the Haskell-prime mailing list