This should be a pre-historical artifact. Amend in the original J used
linear index. I scanned the dictionary page for amend in J7 (the 1993 version)
which documented this behavior. Note the sentence,
the values of ,x replace the values of (,j){,y
http://www.jsoftware.com/jwiki/WikiSandBox
Птн, 15 Июл 2011, Dan Bron писал(а):
> Verbal amend is under-documented and rarely used, due to the property you've
> discovered.
>
> In fact, verbal amend is only ever used when that property is desired.
> Otherwise, one would use the noun or gerundial form.
>
> The property is that in x f} y the verb f addresses indices into the
> __ravel__ of y. So, for example, x 4:} y inserts x at 4 { (,y) .
>
> This has been a known bug for a long time:
>
>
> http://www.jsoftware.com/jwiki/System/Interpreter/Bugs#specificationofverbal
> amendincomplete
>
> -Dan
>
> -----Original Message-----
> From: [email protected]
> [mailto:[email protected]] On Behalf Of Simon Clarkstone
> Sent: Friday, July 15, 2011 9:15 AM
> To: [email protected]
> Subject: [Jprogramming] Puzzling behaviour of u} (verb-ammend)
>
> (Re-sending after adjusting expected from-address.)
>
> I am being confused by the amend adverb's behaviour when applied to a verb.
> http://www.jsoftware.com/help/dictionary/d530v.htm
> I thought that the output of the verb just supplied some indices, and
> } then behaved as if applied to that noun, but that seems not to be
> the case (in j701):
>
> a =: 'abc';:'def'
> '*' (4:}) a
> abc
> d*f
>
> This looked odd. I experimented further.
>
> I know that '4:' will always return a single 4 (rank 0), but upon
> substituting that result, I find:
>
> '*' (4}) a
> |index error
> | '*' (4})a
>
> This makes sense, as 4 tries to address the row 4 of the table (and
> only rows 0 and 1 exist)
>
> The behaviour of u} is as if the array is being ravelled, modified
> using the noun indices, and unravelled. The behaviour matches:
>
> ($a)$ '*' (4}) ,a
> abc
> d*f
>
> Am I misunderstanding the intended nature of u}? The definition in
> the documentation does not mention this pseudo-ravelling, though the
> first example illustrates it. How do I avoid it happening? Is it a
> known bug kept for compatibility; I could find no mention in the
> archives?
>
> Related: is there a conventional way to convert between ravelled and
> non-ravelled indexes, for a given array shape? I would rather not do
> it in 20 characters if I could do it in 5.
>
> --
> src/
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
--
regards,
====================================================
GPG key 1024D/4434BAB3 2008-08-24
gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm