[racket-dev] Fancy application/automatic anonymous functions
On Tue, May 17, 2011 at 3:20 PM, John Clements
<clements at brinckerhoff.org> wrote:
>
> On May 17, 2011, at 12:14 PM, Sam Tobin-Hochstadt wrote:
>
>> Scala has the nice feature that if you write something like this:
>> lst.map(_ - 1)
>> It automatically rewrites to a function like this:
>> lst.map(x => x - 1)
>> This makes writing some higher-order functions much easier.
>>
>> Of course, it's easy to make this using a macro and `#%app'. You can
>> see the result here:
>> github.com/samth/fancy-app
>>
>> I'm planning to put this in `unstable/app', and if there's interest
>> I'll think about incorporating it into the default `#%app', after some
>> experience with it.
>>
>> Lots of people have written similar things (`cut' in SRFI 26, Jay's
>> `super-cut', etc), but I'd like to move towards using it implicitly.
>
> Just to clarify (your README is a bit terse ...): this rewrites all applications where one of the terms is the free identifier '_' . Correct me if I'm wrong.
This is very close, but wrong in a very important way: the identifier
`_' is *bound* by `racket/base' (already). It's treated like a bound
keyword by my `#%app' in the same way `else' is treated by `cond'.
> I think it's vaguely amusing that the wisdom that we've gained in developing sophisticated syntactic tools convinces us 90% of the time not to use them.
I don't know what you mean here.
--
sam th
samth at ccs.neu.edu