Joe Marshall on Rebol 1.0 vs. Rebol 2.0 Binding

I've given my heavy criticism of R3-Alpha's binding model, and it's hard to imagine that it used to be even worse. But it sounds like it was.

However...

...I don't think it's necessarily bad to have the ability to drill down and bind at the WORD! granularity, if that's what you mean.

It's just that it's a bad place to start!

Historically, Rebol/Red bind deeply at LOAD-time... resulting in "stray" bindings on things that are not meaningful.

e.g. a WORD! which is destined to be a local in a function body could start out with a binding to a global.

This puts FUNC "in a bind" (no pun intended) when it processes the body: does it blindly overwrite the binding on the WORD! to become a local, or does it leave it pointing to the global?

You need a way to say "I meant this, don't override it". And you need a way to say "I don't want to bind this"... because it may be that the things you'll be binding to don't exist yet.

Many of the most interesting things you might want to do cannot be feasibly accomplished if you cannot punt and say "let the receiving context decide"...with the ability to point out the things where you say "I know the binding for this part."

People quickly find that they cannot do much in authoring solutions based on composing code with the broken model. Those who tried anything complex knew this; which is why people like Joe (and I) were very critical of the old way.

But Ren-C has brought order to the chaos, with a model that isn't based on smattering "meaningless" bindings around that need to be overridden with the "real" bindings.

Instead, everything starts out unbound and then the binding spreads purposefully through each step.