[racket] hack: implicit function arguments
> I think what Jon was referring to is a feature of Scala more like
> Jay's 'scut' macro - you can implicitly create a function by inserting
> an _. For example:
>
> _ + 1 in scala is the same as (lambda (x) (+ x 1))
It just seemed like fate that I was reading this thread, whilst
simulatanesouly stumbling across this page on the Internet,
[SOURCE: http://wcp.sdf-eu.org/software/index.html]
[BEGIN QUOTE]
Some syntactic sugar for Scsh (or Scheme48).
One of the features in the wish list of Arc that I found cool was the
square bracket sexp that expands to a single argument lambda
expression. So that one can do things like:
(map [/ _ 2] '(2 4 6 8 10))
(cond ((regexp-exec re str) => [match:substring _ 1]) ...)
instead of
(map (lambda (x) (/ x 2)) '(2 4 6 8 10))
(cond ((regexp-exec re str) => (lambda (m) (match:substring m 1))) ...)
Disclaimer: I am not advocating Perl-ish syntactic crypticism. This
has been written just as a funny exercise in Scsh hacking.
Here is a less heretic approach for those using Emacs:
(defun lisp-insert-lambda ()
"Insert lambda form at point asking for variables."
(interactive)
(insert "(lambda (" (read-string "Variables: ") ") ")
(save-excursion (insert ")")))
(add-hook 'scheme-mode-hook
'(lambda ()
(local-set-key "\C-cl" 'lisp-insert-lambda)))
[END QUOTE]
Horace.