Mailing List Archive: 49091 messages
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

[REBOL] Re: variable scopes and recursive func

From: greggirwin::mindspring::com at: 12-Apr-2005 14:31

First, it's great to see some new faces here! The lack of responses from the "regulars" is due to a lot of traffic shifting to AltME worlds, IOS servers, and some people testing GoogleGroups as an alternative to the ML (which has had issues for a while, but seems to be recuperating a bit as of late). "Using Rebol requires that a programmer become familiar with several new and innovative features that can be quite confusing" I'll respectfully disagree with Bernie about that. A lot of people, myself included, have used REBOL very effectively without knowing that any of those advanced features even exist. It *can* be confusing if you happen to be unfortunate enough to do things that bring it into play. For a lot of people, they're never even aware of it, much less caring about how it might work. That's part of the design (IMO). The ones who get hit with it, like Janeks, tend to be programmers who are used to other languages, as Bernie said. We kind of expect things to work like they do elsewhere and it makes it hard to visualize what's going on. The problem for those of us that want to understand how all these things really work lies in letting go of old notions, or trying to equate how REBOL works to how other languages work (e.g. to understand binding, we might be tempted to try and write a little interpreter that works like REBOL does; we're just sick that way :). Ladislav's articles offer the most in-depth binding info out there; no contest. All his articles are well worth reading: http://www.fm.vslib.cz/~ladislav/rebol/ You can nearly always, in normal use, think of context in terms of scoping rules in other languages. The big things that can trip you up are the "hidden context" that functions have (which is why local series values persist between calls), and passing around blocks that are evaluated in different contexts. The case of using REPEAT with a recursive function isn't so much a context/binding issue, in my mind, as an issue of REPEAT's behavior. More in-depth info on binding would be helpful to some people, but I would guess most REBOLers really don't need to know anything about it; the rest of us can ignore it most of the time too. :) If you have specific examples that could be used to explain binding, or that are problematic, that would be good to know. BS> And now, with important new features like Rebol/Services coming BS> out that depend heavily on an understanding of contexts, I'm BS> afraid that I'm going to be completely left behind in such areas. Assuming you don't get tricky, I don't think you'll really need to understand much about contexts, except to think of them as namespaces. I wouldn't worry. LNS is intended to be used by people who don't care about networking protocols or binding. BS> For example, Rebol's parsing is one of these powerful, but BS> unfamiliar features to those of us steeped in regular BS> expressions... Yup. Studying BNF and things that use it is the biggest help IMO. BS> I hope that I'm coming across as being constructive here. Absolutely. Great post. -- Gregg