Stephen Pelc wrote:
>
> > > I would argue that since INCLUDE isn't specified (but should
> > > be) both REQUIRE and INCLUDE can be specified as desired.
> >
> > My interpretation is that since the standard does not explicitly
> > allow that INCLUDED changes, e.g., BASE, in a standard system
> > INCLUDED must leave BASE alone, just like : must leave BASE and
> > the search order alone, or like most other words must leave them
> > alone.
>
> No - I said INCLUDE - not INCLUDED.
Ok.
In that case, I see two options:
- We want to allow that behaviour of INCLUDE along with behaviour that
does not change the BASE (since both variants have existing
practice). That would result in adding, e.g, the following to the
definition of INCLUDE:
"An ambiguous condition exists if the value of BASE is not (decimal)
ten."
If that is added to INCLUDE, I guess it should also be added to
REQUIRE.
- We do not want to allow this behaviour and keep the spec as it is.
IMO it is confusing if INCLUDE silently changes BASE and INCLUDED
does not. Which systems have this behaviour, and are the
maintainers willing to change it?
> > The standard does not allow that INCLUDED does something to the
> > dictionary. However, allowing that would simplify the
> > implementation of REQUIRED (the filename could be stored in a
> > special wordlist), and probably would not break existing
> > programs; Win32Forth already does this, and apparently nobody has
> > complained about it. So one might consider adding this
> > restriction to INCLUDED.
>
> Remove?
?
> But then VFX Forth has done this by default since its
> introduction and so have other MPE systems before VFX.
Just checking: INCLUDED in MPE's Forth systems has done something to
the dictionary that did not come from the included file?
With both Win32Forth and MPE doing this without any complaints, I
guess there is a pretty strong case for adding this restriction:
system implementors have found it useful, and programmers have not had
problems with it.
- anton