Re: sharp-back syntax



On Mar 29, 10:23 pm, Barry Margolin <bar...@xxxxxxxxxxxx> wrote:
In article <MaSdnbeOX7C4FZHbnZ2dnUVZ_hGdn...@xxxxxxxxxxxxx>,
r...@xxxxxxxx (Rob Warnock) wrote:



<nalle...@xxxxxxxxx> wrote:
+---------------
| I hate having to type l-a-m-b-d-a over and over again...
| luckily it's easy to add syntax to Lisp:
...
| #`(= ?x 5) => (lambda (?x) (= ?x 5)) ...
| (mapcar #`(> ?x ?y) list1 list2) => ...
+---------------

Yeah, I think we've all done something similar. Myself,
I called it #$ and used shell-like ${digit} as params:

> (mapcar #$(= $1 5) '(1 3 5 7 9))

(NIL NIL T NIL NIL)
> (mapcar #$(* $1 1.085) '(12.34 15 10 25.37))

(13.3889 16.275 10.85 27.52645)
> (mapcar #$(> $1 $2) '(1 2 3 4 5) '(5 4 3 2 1))

(NIL NIL NIL T T)
> (mapcar #$$2 '(1 2 3) '(4 5 6) '(7 8 9))

(4 5 6)

But I use this *only* at the REPL when poking around,
*never* in saved source files...

One problem I can see with this is that they don't nest properly. The
outer one will drill into inner one and see its implicit lambda
variables, and make them into lambda varables for the outer one.

Also, if you have any quoted lists that contain symbols in the same
format as your implicit lambda variables, the reader macro will think
they're variables.

are you talking about mine or Rob's? Mine doesn't actually rewrite any
code, it just wraps it in a "(lambda list-of-implicit-lambda-vars..."
form so QUOTE will behave normally, so will scope...

now if only Allegro Prolog behaved so nicely with nested forms...

Nick

.