On Sat, Oct 26, 2013 at 7:04 AM, Ganesh Rapolu <[email protected]> wrote:
> The dictionary does not say that the two arguments for -: have to match in
> type so this result is correct. Nevertheless, I would be glad if someone
> could provide an explanation/justification for this behavior.
>
> datatype m =. 0 {. 'adaf'
> literal
> datatype n =. 0 {. 10 0 10 10
> integer
> m -: n
> 1
The J language generally tries to treat empty values the same
regardless of type. I thought this general design rule was documented
explicitly somewhere in the dictionary (or the primer?), but I can't
find it right now.
As an example, ((0$'a'),3 5 9) works because the an array of any type
is accepted, even though ((1$'a'),3 5 9) is an error. On the other
hand, a rare example for an operation that does care about the type of
an empty vector is overtake: try (4{.0$'a') versus (4{.0$0).
Anyway, I don't know whether it's a good thing or a bad thing to treat
all types of empty arrays the same (their shape does matter, mind
you), but J has been doing that for ever, consistently.
Ambrus
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm