Isn't the 4!:4 value stored in the symbol table? (I have not yet
studied the code, I am just trying to think things through.)

If so, shouldn't the 4!:4 value for y get set when the symbol table is
created (at verb definition time)? Or, at least, I cannot think of any
reason why it should get changed after that...

If not, ... I guess I should go read the code if it's not stored there.

Thanks,

-- 
Raul


On Thu, Nov 24, 2016 at 11:06 PM, Henry Rich <[email protected]> wrote:
> Good troubleshooting!  I see now.  Probably fixable, I'll have to think
> about details.
>
> In J8.05, a starting symbol table is created when an explicit definition is
> created.  This table includes y and all other names that are assigned within
> the definition.  When the definition is executed, the value of y[/x] is set
> with the argument; this assignment just stores the value rather than going
> through the full assignment code.  But that assignment code is where the
> 4!:4 value gets set.  So you get 0 for the 4!:4 value.
>
> I think the fix will be to set the 4!:4 value in the assignment of y when
> the verb starts.
>
> This is yet one more bug to be credited to the quest for performance.  But
> it really IS important to keep the startup of an explicit definition as
> short as possible.
>
>
> Henry Rich
>
>
>
>
> On 11/24/2016 8:55 PM, Ric Sherlock wrote:
>>
>> No it appears that (4!:4 <''y'') returns 0 inside loc_z_, which is why the
>> result is the path to profile.ijs as that seems to be the first element in
>> the result of 4!:3 ''
>>
>> Cheers,
>>
>> On Fri, Nov 25, 2016 at 2:22 PM, bill lam <[email protected]> wrote:
>>
>>> I think (4!:4 <''y'') returns _1 inside loc_z_.  Can you verify
>>> this?
>>>
>>> Пт, 25 ноя 2016, Ric Tikkanz написал(а):
>>>>
>>>> In J804 (and earlier) running the following verb would give the pathname
>>>
>>> of
>>>>
>>>> the script that called it.
>>>>
>>>> loc_z_=: 3 : 'jpath > (4!:4 <''y'') { 4!:3 $0'  NB. pathname of script
>>>> calling it
>>>>
>>>> So a script that ran: MyPath=: loc ''
>>>> would assign the script's pathname to the noun MyPath.
>>>>
>>>> In J805 this no longer appears to work as before. Instead the path
>>>
>>> returned
>>>>
>>>> is /opt/j64_805/bin/profile.ijs
>>>>
>>>> Is this change of behaviour expected/intended?
>>>>
>>>> Cheers,
>>>>
>>>> Engine: j805/j64/linux
>>>> Beta-16: commercial/2016-11-17T13:15:53
>>>> Library: 8.05.09
>>>> Qt IDE: 1.5.2s/5.5.1
>>>> Platform: Linux 64
>>>> Installer: J805 install
>>>> InstallPath: /opt/j64_805
>>>> Contact: www.jsoftware.com
>>>> ----------------------------------------------------------------------
>>>> 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
>>> gpg --keyserver subkeys.pgp.net --armor --export 4434BAB3
>>> ----------------------------------------------------------------------
>>> 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