Raul Miller wrote:
But I don't think that's the issue you
were trying to talk about.
Here's a simpler example. Given:
g=:0 :0,')',LF
t=:0 :0
3=3
)
This works:
0!:1 g
This does not work:
0!:1 ];._2 g
Put differently, :0 facilities currently require the script have
frets (the matrix form does not have frets).
Given the presentation in Appendix H of the dictionary, this
seems to be design intent, but it might be a bug.
This clarifies exactly what appears to happen. In a script noun (a vector
of characters with LF as frets) the sequential character of the lines is
recognised. However if the noun is a character matrix each line is treated
independently and the sequential character of the lines as in 0 : 0 or
3 : 0 is not treated correctly. Adding a LF to the lines does not lead to
correct treatment. Doing ,(array),.LF does.
This may have been the intent, and it does provide options in the way in
which code is represented, so to say 0!:1 executes the following noun as a
script may be correct. 0!:1 seems to behave as a "1 verb but I have not
found any reference to that in the Dictionary. The following illustrates
this behaviour
h =: 'prod =: 3 : 0',LF,'*/y',LF,')',LF NB. a script vector
j =: 'add =: 3 : 0',LF,'+/y',LF,')',LF NB. a script vector
hm2 =: h,:j
0!:1 hm2
prod =: 3 : 0
*/y
)
add =: 3 : 0
+/y
)
prod
3 : '*/y'
add
3 : '+/y'
If that is the intended behaviour, a suitable sentence noting the rank of
this foreign conjunction should be added to the entry.
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm