|
|
|
|
|
by zeveb
3188 days ago
|
|
I understand that R7RS got rid of syntax-case and standard Scheme is back to syntax-rules only (which is another thing I like about Common Lisp: the standard has been in existence for 23 years). I'm reminded of this article (https://fare.livejournal.com/189741.html), where this Common Lisp macro: (defmacro nest (&rest r) (reduce (lambda (o i) `(,@o ,i)) r :from-end t))
Has to turn into this in Racket (which isn't quite Scheme): (define-syntax (nest stx)
(syntax-case stx ()
((nest outer ... inner)
(foldr (lambda (o i)
(with-syntax (((outer ...) o)
(inner i))
#'(outer ... inner)))
#'inner (syntax->list #'(outer ...))))))
And was incredibly difficult to reason about. And that author likes Racket. |
|
I'm not going to sit here re-evaluating Scheme, year by year, to see whether it's up to snuff yet.
Someone drop me an e-mail when Scheme gets a well-defined, left-to-right evaluation order, and when its imperative forms all return a stable value like #f or whatever.