[plt-scheme] $-expressions (was: How do I convert (values ...) ...)
hendrik at topoi.pooq.com wrote:
> On Thu, Mar 11, 2010 at 02:08:14PM +1300, Tony Garnock-Jones wrote:
>> However, (you (do (end (up (nesting (continuations (fairly (deeply
>> (sometimes))))))))).
>
> Which is why I'm getting on my old hobby-horse and somplaining again
> about Lisp's bracket syntax. It's really useful to have a symbol (I've
> used '/' that indicates 'all the rest of this list is really a sublist'.
> Then you could have written
>
>> However, (you /do /end /up /nesting /continuations /fairly /deeply
>> /sometimes).
Complain and ye shall receive.
Throw the attached rest-reader.ss file somewhere on your filesystem and
use it with
#reader "<relative-path-to-rest-reader.ss>"
followed by your favorite module definition form. I like this example:
#reader "rest-reader.ss"
$module my-awesome-module scheme
(define my-list (list 1 $list 2 3)) ; = (list 1 (list 2 3))
I like it because I can't stand having top-level-looking stuff indented,
and "$module" keeps it flat.
It plays nicely with at-exp (as long as at-exp goes second; not my
fault, AFAICT - it should compose with almost any reader):
#reader "rest-reader.ss"
#lang at-exp scheme
(define my-list @list[1 $list 2 3]) ; = (list 1 (list 2 3))
This is really fugly (it looks like Perl or Haskell or something) but
it's entirely consistent:
`$ 1 2 ,@$ list $ + 4 5 ; => '(1 2 9)
The custom reader inserts expressions that change current-readtable so
that $ works in calls to read and read-syntax at evaluation time - and
thus in the REPL.
That reminds me: when you copy @-expressions into the REPL, they don't
parse. But scribble/reader.ss could do this more easily than
rest-reader.ss does.
(Eli, I have complained. Do I receive? :p)
Neil T
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: rest-reader.ss
URL: <http://lists.racket-lang.org/users/archive/attachments/20100311/e7e4829d/attachment.ksh>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: rest-reader-tests.ss
URL: <http://lists.racket-lang.org/users/archive/attachments/20100311/e7e4829d/attachment-0001.ksh>