Thanks, Henry.  As I suspected, this is a feature which you need to know about.

I wasn’t desperately worried about the application in question,  just wondering 
how Louis’ solution worked!

Good luck debugging the debugger,  should you decide to do so,
Cheers,
Mike

 
Sent from my iPad

> On 10 Jul 2019, at 12:48, Henry Rich <henryhr...@gmail.com> wrote:
> 
> Based on your report (very complete, thanks) I can make a guess at the source 
> of the domain error.
> 
> It looks like fastincl, which was defined as
> 
> fastincl =: cmp 1 : 0
> text
> )
> 
> was replaced by
> 
> fastincl =: cmp fastincld4B7g0
> fastincld4B7g0 =: 1 : 0
> text
> )
> 
> Unfortunately, the replacement was done in that order, so that at the point 
> fastincld4B7g0 was first encountered, it was undefined and assumed to be a 
> verb.  Thus fastincl became defined as a verb hook.  When it was executed, 
> the name fastincld4B7g0 was resolved, and when it turned out not to be a verb 
> as expected, produced domain error.
> 
> The replacement in the debugger should be only for verbs.  Fixing that will 
> make the domain error go away, but it will not make for easy debugging.  The 
> debugger will look up the name 'fastincl' and find that it is not an explicit 
> definition (it contains one, but also the reference to cmp).  That will cause 
> fastincl to be debugged as a tacit verb, with no access to the individual 
> lines. I will have to think about how to fix that problem.
> 
> Henry Rich
> 
>> On 7/10/2019 3:20 AM, 'Mike Day' via Programming wrote:
>> It's the odd name and the fact that a domain error doesn't arise if you just 
>> run the phrase.
>> 
>> For the sake of this reply,  I've just opened up a new JQt session, and a 
>> new script,
>> pasting in the defs I'd listed earlier, then loading and running as 
>> described below.
>> 
>> Here's the script,  with the notated session output appended, at NB. ####...,
>> all below this sign-off.
>> Cheers,
>> Mike
>> 
>> NB. copy of minimal script and session output
>> 
>> fastmax=: 1 : 0
>>  B=. C=. 1"_1 y
>>  while. +./C do.
>>   i=. C i.1
>>   B=. 0 i} B
>>   B=. -.@:u&(i{y)&.(B&#) y
>>   C=. C *. B
>>   B=. 1 i} B
>>  end.
>>  B#y
>> )
>> 
>> cmp=: +./@E.&>
>> 
>> fastincl=: cmp fastmax
>> 
>> NB. #############################################################
>> NB. notated copy of session
>>    load 'c:/d/j807/user/temp/215.ijs' NB. minimal script
>> 
>>    NB. running without debug
>>    fastincl 'abcde'
>> abcde
>>    (cmp fastmax) 'abcde'
>> abcde
>> 
>> 
>>    NB. invoke debug with Run/Debug OR ctrl-K
>>    NB. In debug window, select "fastmax" using "Stop Manager",
>>    NB. and choose "Stop All Lines"
>> 
>>    NB. Invoke it as follows:
>> 
>>    NB. a) indirectly via "fastincl",  the derived verb, on any string
>> 
>>    fastincl 'abcde'
>> 
>>    NB. immediate display in "debug"   ...
>>    NB. top output pane:
>>    NB.  >[0] cmp fastincld4B7g0  NB. Where does this name arise?
>> 
>>    NB. other two panes show:
>> 
>>    NB.   domain error
>>    NB.   fastincl[header] cmp fastincl
>> 
>>    NB.   cmp v +./@E.&>
>>    NB.   fastincl v cmp fastincld4B7g0
>> 
>>    NB. check names
>> 
>>   names 3
>> cmp      fastincl
>>    names 1    NB. what is fastincld4B7g0 ?!?!
>> fastincld4B7g0 fastmax
>> 
>>    clear''
>>    names 1
>> 
>> 
>>    load 'c:/d/j807/user/temp/215.ijs'
>>    NB. set up "debug" as before
>> 
>>    NB. rerun with (cmp fastmax) rather than "fastincl"
>>    (cmp fastmax) 'abcde'  NB. can step through line by line in "debug" as 
>> usual
>> 
>> 
>> 
>> 
>>> On 10/07/2019 00:43, Henry Rich wrote:
>>> I haven't tried to recreate this yet, but: what is the problem? Should it 
>>> not get a domain error?  Or is it the odd name 'fastincld4B7g0'?
>>> 
>>> Henry Rich
>>> 
>>>> On 7/9/2019 6:35 PM, 'Mike Day' via Programming wrote:
>>>> 9.0 beta and 8.07 - JQt -Windows 10
>>>> M
>>>>        Sent from my iPad
>>>> 
>>>>> On 9 Jul 2019, at 23:32, bill lam <bbill....@gmail.com> wrote:
>>>>> 
>>>>> what is the JVERSION ?
>>>>> 
>>>>> On Wed, Jul 10, 2019, 1:27 AM 'Mike Day' via Programming <
>>>>> programm...@jsoftware.com> wrote:
>>>>> 
>>>>>> Something for Henry, I think.
>>>>>> 
>>>>>> Starting to have a look at Louis' variants on Vadim's approach,  I tried
>>>>>> using debug on "fastincl" , invoked by ctrl-K.
>>>>>> 
>>>>>> Setting stop on all lines in either fastincl =: cmp fastmax
>>>>>> or in fastmax and then running
>>>>>>     fastincl lines
>>>>>> results in
>>>>>> "
>>>>>> domain error
>>>>>> 
>>>>>> fastincl[header] cmp fastincl
>>>>>> 
>>>>>> "
>>>>>> 
>>>>>> in debug's middle pane,
>>>>>> 
>>>>>> with
>>>>>> 
>>>>>> "
>>>>>> 
>>>>>>> [0] cmp fastincld4B7g0
>>>>>> "
>>>>>> 
>>>>>> displayed in the top pane
>>>>>> 
>>>>>> The lowest pane displays:
>>>>>> 
>>>>>> "
>>>>>> 
>>>>>> cmp v +./@E.&>
>>>>>> 
>>>>>> fastincl v cmp fastincld4B7g0
>>>>>> 
>>>>>> "
>>>>>> 
>>>>>> 
>>>>>> This happens in both J 9.01 beta and J 8.07,  under Windows 10 .
>>>>>> 
>>>>>> Debug seems ok however when explicitly running "(cmp fastmax) lines "
>>>>>> 
>>>>>> So it's probably something to do with fastmax being an adverb,  but here
>>>>>> are
>>>>>> Louis' definitions to save hunting for them in the correspondence:
>>>>>> 
>>>>>> fastmax=: 1 : 0
>>>>>>   B=. C=. 1"_1 y
>>>>>>   while. +./C do.
>>>>>>    i=. C i.1
>>>>>>    B=. 0 i} B
>>>>>>    B=. -.@:u&(i{y)&.(B&#) y
>>>>>>    C=. C *. B
>>>>>>    B=. 1 i} B
>>>>>>   end.
>>>>>>   B#y
>>>>>> )
>>>>>> 
>>>>>> cmp=: +./@E.&>
>>>>>> 
>>>>>> fastincl=: cmp fastmax
>>>>>> 
>>>>>> debug behaves just the same for
>>>>>> 
>>>>>>     fastincl 'abc'
>>>>>> 
>>>>>> so I won't bother defining "lines" here.
>>>>>> 
>>>>>> This is probably known behaviour,  but it's new to me!
>>>>>> 
>>>>>> Thanks,
>>>>>> 
>>>>>> Mike
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> ---
>>>>>> This email has been checked for viruses by Avast antivirus software.
>>>>>> https://www.avast.com/antivirus
>>>>>> ---------------------------------------------------------------------- 
>>>>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>>>>> 
>>>>> ----------------------------------------------------------------------
>>>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>>> ----------------------------------------------------------------------
>>>> 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
> 
> ----------------------------------------------------------------------
> 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