> Hi,
>
> just my two cents...
>
> > [EMAIL PROTECTED] wrote:
> >
> > > > > I suggest inline-strings and blocks should be read-only,
> > > >
> > > > This might be an idea, but then you have more problems when
> you
> > > > save and then load strings... No, I don't think this would
> be a
> > > > good solution.
> > > >
> > >
> > [...]
> > > What's your reservation with load and save? I have no idea
> yet.
> > > (and later) a write-protected saved string is changeable after
> > > load? or loaded blocks are then write-protected? hm.
> thinking..
> >
> > If literal strings should be made "write-protected" (a better
> > approach wuold be a sort of copy-on-modify for series, this has
> > been discussed and was proposed mainly by Ladislav), then every
> > string you are loading form your data will be made
> write-protected
> > (because it is "literal").
> >
> [...]
>
> My suggestion is a little bit different. If you want to have
> "Protected Literals" ("Immutable Literals" can
> be the term the others may prefer), you can use a simple strategy.
>
> 1) You can have two different types:
>
> immutable-block!
> mutable-block!
>
> , where the usual literals such as [] are of Immutable-block!
> type.
>
> This principle doesn't lead to a big deformation of Rebol, it is
> already there - see the object! or list! types. They (sort of)
> don't have "normal" literals, you often use expressions like:
>
> make object! [...] or make list! [...] instead
>
> 2) For every mutable type you create its immutable counterpart
> type.
>
> 3) Values of immutable-block! type contain only immutable values.
>
> 4) The expressions:
>
> do blk
>
> func args body
>
> work normally for immutable-blocks Blk, Args, Body. If you want to
> use them for mutable-blocks, they work like:
>
> do make immutable-block! blk
> func make immutable-block! args make immutable-block! body
>
> , this doesn't lead to a big complication for the code, because it
> is (sort of) present already - Args/Body are deep copied even now
>
> 5) The [a: []] "paradox" doesn't exist anymore, because [] is
> immutable. If you want to have a mutable value, you must write:
>
> [a: make mutable-block! []]
>
> , but the last is safe.
>
> Ladislav
>
Yes. and [block!] is the name for mutable and [copy]'s are mutable,
(except with refinement) and rebol-code lookes like before.
but we have a handy warning.
BTW, how about a link to the creation-point of a value?
this would help me, i often have this "you need a block here!"
and have to look around where the var is assigned,
especially when using locals (no good look-in).
Exec-Lists had such a debug-text-field :)
BTW2: What happens if i change the body of a running function yet?!
Volker