That also would mean that Paul's solution could be simplified as assignment of 
m is not required, just the mention of it.

    now=: 1 : 0
y[m
)
   1 now 'cat'
cat

Great explanation Henry

Cheers, bob

> On Aug 7, 2020, at 09:10, Henry Rich <[email protected]> wrote:
> 
> Is it a bug?  More a continuing penance for an initial faulty design.
> 
> https://code.jsoftware.com/wiki/Vocabulary/com#Details note 11 describes the 
> situation.
> 
> In early J, the names u/v/m/n had not been invented, and an explicit modifier 
> had only the names x and y to work with.  x was what we now call u, and y v.  
> Obviously, such a modifier was very restricted: to produce a modifier as we 
> now know it, with access to u/v/x/y, the modifier would have to create the 
> text after substituting its x/y, and have that reinterpreted by (3 : n) to 
> create a verb.  That definition didn't last long, but while it was in force a 
> few simple system modifiers were written, for example
> 
>    bind
> 2 : 'x@(y"_)'
> 
> Nowadays we would write 'u@m' or 'u@(m"_)'.  The language wasn't even weaned 
> and it had a compatibility problem!
> 
> The 'solution', still in place today, was to inspect the text of the 
> modifier.  If no reference to u/v/m/n is found, the modifier is assumed to be 
> old-style, and the names x and maybe y are defined as the modifier arguments. 
>  With your example, an adverb has no y, so y is left undefined and you get a 
> value error.  This error is detected when (1 now) is executed.  You want a 
> new-style modifier that defers execution until the (modifier+u/v) sees 'cat'.
> 
> To get a new-style modifier, you have to have u/v/m/n in there somewhere.  
> Just as you discovered.
> 
> Henry Rich
> 
> 
> On 8/7/2020 11:28 AM, Paul Jackson wrote:
>> This is not where I began. I had lots of use of the m argument, but all of
>> it in quotes. It took me a while to isolate the problem to something this
>> simple. Now that I have, I have also found other errors are signaled with
>> the dyadic case of an adverb, and both cases of a conjunction. As my second
>> example shows, I can avoid the problem with an unnecessary use of the name.
>> I can provide details if anyone has trouble replicating the rest of the
>> issues. What I'm hoping for is a confirmation that this is a bug.
>> 
>> Paul
>> 
>> now=: 1 : 0
>>  y
>> )
>>    1 now'cat'
>> |value error: now
>> |   y
>> 
>> now=: 1 : 0
>>  y [m=. m
>> )
>>    1 now'cat'
>> cat
>> 
>>    JVERSION
>> Engine: j901/j64/android
>> Release-f: commercial/2020-06-12T10:01:40
>> Library: 9.01.24
>> J Android: 1.4.09/9/28
>> Platform: Android 64 (arm64-v8a)
>> Installer: unknown
>> InstallPath: /storage/emulated/0/Android/data/com.jsoftware.j.android/files
>> Contact: www.jsoftware.com
>> ----------------------------------------------------------------------
>> For information about J forums see http://www.jsoftware.com/forums.htm
> 
> 
> -- 
> This email has been checked for viruses by AVG.
> https://www.avg.com
> 
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm

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

Reply via email to