On 05/30/2012 03:40 PM, Eli Barzilay wrote: > Now, lets imagine that instead of a simple `<>' hole, there are two > kinds of holes with an "up" or a "down" direction -- this leads to > this kind of a syntax: > > (○ "foo bar baz" > (substring ↑ 3 8) > (string-trim ↑) > (let ([str ↑]) ↓) > (and (regexp-match? #rx"^[a-z].*[a-z]$" str) ↓) > (string-append "*" str "*")) > > where you can read `↑' as "the above" and `↓' as "the below". The > thing that makes me excited about this is how you can read this as the > above [*] reading.
Maybe a simpler proposal is just a 'last' identifier that is always bound to the previous expression? I think having two arrows could get confusing. I'm not really a fan of the `let' expression binding `str' in the scope of all the expressions below it since they only occur in the `let' due to the down arrow. But with "last" it would be: (* "foo bar baz" (substring last 3 8) (string-trim last) (let ([str last]) (* (string-append "*" str "*")) (and (regexp-match ... str) last))) Having expressions come from the bottom, using the down arrow, seems sort of wierd. _________________________ Racket Developers list: http://lists.racket-lang.org/dev