> second :f is different. It returns a "live" block of code (the body) with
> the contained words bound to the local frame of the function f.  This
block
> of code can be modified with and extended (with append etc. using 'bind if
> necessary) after the function is created.

> It seems clear that the
> interpreter executes the function by 'do-ing this body block.

The original reason I originally questioned the relationship between
functions and dialects in this thread was due to this "'do-ing the body
block" concept.  To make the question specific define a function f like
this:

    >> f: func[/local x][x: {} append x "a" print x]

My question then is, how are the first two values (x: {}) of the body block
treated when the interpreter executes the function? In terms of purely
executing the block, logically it seems, the first two values could be
considered redundant, correct?

A related issue (maybe), I don't know if it is been asked before.

If I now use f, I get:

    >> f
    a
    >> f
    aa

Compare this with another function g and its results:

    >> g: func[/local x][x: 0 x: add x 1 print x]
    >> g
    1
    >> g
    1

Are these results related to the execution of a function or the
interpretation of datatypes?
Any enlightenment please?

Brett.

Reply via email to