On 8/6/07, Oleg Kobchenko <[EMAIL PROTECTED]> wrote:
> NB. strange (not a value error)
>   3 : 't [ 0!:0 ''t=. 1+1'' ' 0
> |domain error: t
> |       t[0!:0't=. 1+1'

Since you did not elaborate on what seems to be happening
here:

When parsing the body of the 3 : expression
J will see
   verb noun conjunction noun noun
but then after resolving the conjunction it
will see
   verb verb verb noun

Then, it will evaluate the monad treating the remaining
noun as a script.

But apparently it does not re-examine those verbs
to see if any of them have changed after executing
the first as a monad.  (If it allowed syntactic types
to change after it examined them, what should it
do if a verb becomes and adverb or conjunction?)

I'm pretty sure that that domain error comes from
trying to evaluate the left-most 'verb' as a monad.
Its definition is bogus.

But I think this is an error, if not explicitly documented
in the dictionary: local definitions in scripts vanish when
the script completes (in other contexts) which suggests
that scripts should have a different local context from the
calling environment.

> NB. moreover it is blocking =:
>   3 : 't [ 0!:0 ''t=: 1+1'' [ t=.3 ' 0
> |domain error
> |   t    =:1+1
> |[-0]

This is slightly different, but follows from your first
example (since the script context is the same context
as the body of your 3 : definition, the local definition
from the 3 : context interferes with the global definition
from the script context).

-- 
Raul

Note also:


-- 
Raul
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to