> and I should be able to say just (compare > karma).
I suggest you implement a terse syntax for partial-apply. For my own pet lisps, I use {}. (You are welcome to steal it ;-)
So {+ 1} would expand to (in scheme) something like (lambda rest (apply + `(1 ,@rest)). You could keep partial-applying arguments
(do
(= x {+ 1})
(= y {x 2})
then actually apply it with ()
(y 3 4 5) ; => 15
Your accumulator generator in Arc:
(def foo (n) [++ n _])
Could be shortened to:
(def foo (n) {++ n}) ; even terser than regular Arc!
The only time you'd need _ is when you want to change the order of the arguments (e.g. you'd never need {+ _ 2}, but you might need {/ _ 3}, or even {/ _ _ _ 3} if you want to jam the first three arguments in front.
This has some other interesting properties:
- In a lisp-1 OR lisp-2, #'foo can be represented as {foo}.
- Your karma macro can fit in there as (compare > {karma})
- With the _ variables, it might even be a general case of your [] syntax.
- {} stands out visually. "Here be electric magic."
- If you ever implement generic functions dispatched left-to-right, you can implement partial dispatch for partial application.
I suggest you implement a terse syntax for partial-apply. For my own pet lisps, I use {}. (You are welcome to steal it ;-)
So {+ 1} would expand to (in scheme) something like (lambda rest (apply + `(1 ,@rest)). You could keep partial-applying arguments
then actually apply it with () Your accumulator generator in Arc: Could be shortened to: The only time you'd need _ is when you want to change the order of the arguments (e.g. you'd never need {+ _ 2}, but you might need {/ _ 3}, or even {/ _ _ _ 3} if you want to jam the first three arguments in front.This has some other interesting properties:
- In a lisp-1 OR lisp-2, #'foo can be represented as {foo}.
- Your karma macro can fit in there as (compare > {karma})
- With the _ variables, it might even be a general case of your [] syntax.
- {} stands out visually. "Here be electric magic."
- If you ever implement generic functions dispatched left-to-right, you can implement partial dispatch for partial application.