more flexible partial application
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
> > bar x w = \y z -> foo x y z w
> > 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.
More information about the Haskell-prime