We don't have a tutorial about this. In Rye this is still partially open to experimentation. If in Rebol dialects were the most interesting part. Rye also has multiple dialects, but I think in Rye contexts (scopes) are the most interesting aspect of the language.
In very short. Code is always evaluated inside a specific context. This also determines what certain words mean (from "core" words, like if, for, fn, ... up). Contexts can be linked together (you can define a parent context), created, manipulated, isolated at runtime. We have functions like do\in do\par(ent) and also fn\in and fn\par that evaluate code in context you provide. Lookup for a word happens in current context and then if not found in it's parent contexts if there are any. This is lookup ... "read" operation, but you can change (set or mod) only words in a current context. There is no syntax to change a value in parent or sub-context (there is no global context). You can call functions in (send messages to) contexts in your view and convention is if functions change values in-place their name must end with !.
That is current idea in very short, but this is all still open to be tested in practice and potentially changed.
- Definitional Scoping / Rebol actually does not have scoping at all - https://stackoverflow.com/q/21964110/12195
- Bindology - https://en.wikibooks.org/wiki/Rebol_Programming/Advanced/Bin...