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
