Dan,
Thank you very much for your helpful reply. I don't
think I asked my question very well, because I was most
surprised by the first example's result because it was not
an error and because the result was an empty. Does that
result surprise you/others?
(B=)
On Wed, 31 Oct 2007, Dan Bron wrote:
+ Brian Schott asked:
+ > Is the following behavior predictable
+ > from the Dictionary?
+
+ Yes. The fundamental rule to keep in mind is the shapes of arguments to the
dyad must share a common prefix with respect to the
+ rank of that dyad. The dyad + has ranks 0 0 so its frames include the
entire shapes of its arguments. Hence, the shape of
+ one of its arguments must be a (possibly total) prefix of the shape of the
other.
+
+ In your example cases:
+
+ NB. Brian's example arguments
+ a=: '' ; 1
+ a=: a,: '' ;~ 1
+ a=: a, '' ; ''
+ a=: a, 1 ; i.0
+ a=: a, 1 ; i.0 0
+ a=: a, 1 2;i.0 0
+ a=: a, '' ;1 2
+ a=: a, 10 ;1 2
+
+ NB. Display of examples attempted
+ egs =: 4 : ' ''('',(5!:5<''x''),'') + '',5!:5<''y'' '&.>/"1
+
+ NB. Display whether the attempted addition
+ NB. succeeded or failed.
+ add =: 'ok'"_@:+ :: ('err'"_)&.>/"1
+
+ NB. Determines whether shapes share a common prefix
+ NB. wrt rank of + (i.e. 0 0 0 )
+ pfx =: [: ([: -:&.>/ <.&#&>/ {.&.> ])"1 $&.>
+
+ NB. Correspondence: 3 columns
+ NB. 0. example sentence
+ NB. 1. result (ok or err)
+ NB. 2. do arguments share a prefix?
+ cor =: egs ,. add ,. pfx
+
+ cor a
+ +-------------+---+-+
+ |('') + 1 |ok |1|
+ +-------------+---+-+
+ |(1) + '' |ok |1|
+ +-------------+---+-+
+ |('') + '' |ok |1|
+ +-------------+---+-+
+ |(1) + i.0 |ok |1|
+ +-------------+---+-+
+ |(1) + i.0 0 |ok |1|
+ +-------------+---+-+
+ |(1 2) + i.0 0|err|0|
+ +-------------+---+-+
+ |('') + 1 2 |err|0|
+ +-------------+---+-+
+ |(10) + 1 2 |ok |1|
+ +-------------+---+-+
+
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm