[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: What's so cool about Scheme?



> But "bind-too-late" did work (mostly) in "old Lisp" because bindings
> obeyed a dynamic, stack-based discipline.

Ah, I get it.

It occurs to me that if old Lisp had had quasiquote, an easy workaround
would have been:

  (DEFINE ADD-TO-ALL (LAMBDA (Z LS)
    (MAPCAR (QUASIQUOTE (LAMBDA (X) (PLUS (UNQUOTE Z) X))) LS)))

Voila, FUNARG problem solved, upward and downward.  ;)  Am I missing
anything?

This wouldn't work if the inner lambda expression tried to mutate the value
of Z, so you'd have to also require that such expressions avoid mutating
captured "variables" - or better yet, make the entire language purely
functional and mutation-free.

So: closures are a poor man's pure functional language with quasiquote???

Anton

P.S. Man, my koan is going to need some work...