On Sat, Jan 12, 2013 at 9:01 PM, Jose Mario Quintana
<[email protected]> wrote:
> If I interpret you correctly, please advice if I do not, you are
> stating that the rank, domain and mapping of the generic verbs (u @ v)
> and (u at v) are the same but you are not (directly) stating that they
> are equivalent within a meaningful (without cheating) context, for
> example, you are not (directly) stating that (u @ v @ w) and (u at v @
> w), or (u @ v (@ w)) and (u at v (@ w)), or (u @ v (d.1)) and (u at v
> (d.1)) are each pairwise equivalent; or maybe your are (were) claiming
> that, and this is what you mean by “range” of a verb?  The latter
> concept still puzzles me; I searched the entire dictionary but I did
> not find anything relevant; a clarification would be welcome.

"range" is the term I learned in school for what some people call the
"codomain".  It's represents the set of results which a function can
produce.

I believe that u @ v and u at v operate the same way.  So u at v @ w
and u @ v (@ w) should operate the same way.  However d. is concerned
with issues besides the definition of the verb it is given -- it is
also sensitive to the spellings used.

> Should the replacement have worked?  In other words, is the different
> treatment of (@) and (at) by (d.) a bug rather than a feature?  I
> strongly suspect the answer is yes.  Why?

It's arguably a bug because.  That said, there are two possible ways
the bug can be identified:

a) It's a bug because the result of +:@*: d. 1 has infinite rank while
the dictionary says that +:@*: is being treated as if it has zero rank

b) It's a bug because we should never use the result of d. at any rank
other than 0.

Personally, I lean towards interpretation a - here, the bug is in the
interpreter and can be fixed.  Interpretation b says that the bug is
in user code, and that seems mysterious to me (but interpretation b
does give us compatibility between current versions of J and future
versions where the bug is fixed).

Anyways, just as a reminder,
http://www.jsoftware.com/help/dictionary/dddot.htm says:

u d. n is like u D. n except that u is treated as a rank-0 function.

And given that +:@*: is rank 0 and d. is intended to treat it as rank
0, I cannot understand how a result with infinite rank properly
represents the intended result from d.

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

Reply via email to