It looks to me like your inlocale should never get executed.

It is a conjunction that refers to u and y, which means that it will not 
be interpreted until it is given a y, which it never is.  So I think 
you're just creating an anonymous verb and throwing it away.

Or, I could be seeing things.

Henry Rich

Yuvaraj Athur Raghuvir wrote:
> Thanks!
> 
> Yes, with this, I can reduce the test01 code to:
> 
> test01 =: 3 : 0
>  c =. conew 'myclass'   NB. use copathnl__c '' to inspect
>  try. hello__c ''
>  catch.
>   vs =. 'hello =: 3 : 0',CRLF,'smoutput ''hello''',CRLF,')'
>   scr__c vs         NB.   c addv vs
>   hello__c ''
>  end.
>  smoutput copathnl__c ''
>  erase__c <'hello'  NB.  c remv 'hello'
>  smoutput copathnl__c ''
>  destroy__c ''
> )
> with  scr =: 0!:0 in the locale 'myclass'.
> 
> This gives a better solution to my requirement.
> 
> However, I do not understand how the inlocale conjunction that I have
> written works - how does it get the 'x' argument as the 'n' to extract the
> class information?
> 
> 
> 
> 
> On Mon, May 18, 2009 at 2:35 PM, Oleg Kobchenko <[email protected]> wrote:
> 
>> I don't see the point of these complications: "inlocale".
>> The mechanism is already in __numloc and _txtloc_ syntax.
>>
>>   scripts_z_=: 0!:0       NB. named and implicitly inherited from "z"
>>
>>   scripts_qq_ 'zz=: 3 : '' y+2 '' '
>>   zz_qq_ 3
>> 5
>>   q1=: conew'qq'
>>   scripts__q1 'zz3=: 3 : '' y+3 '' '
>>   zz__q1 3
>> 5
>>   zz3__q1 3
>> 6
>>
>>   zz4__q1=: 3 : ' y+4 '   NB. better: natural name definition
>>   zz4__q1 3
>> 7
>>
>>   erase__q1 <'zz4'        NB. already defined
>> 1
>>   zz4__q1 3
>> |value error: zz4__q1
>> |       zz4__q1 3
>>
>>
>>
>>
>> ----- Original Message ----
>>> From: Yuvaraj Athur Raghuvir <[email protected]>
>>> To: Programming forum <[email protected]>
>>> Sent: Monday, May 18, 2009 1:49:51 PM
>>> Subject: [Jprogramming] Understanding Conjunctions & Adverbs
>>>
>>> Hello,
>>>
>>> To add and remove verbs dynamically to a class from an instance, I wrote
>> the
>>> following:
>>>
>>> addv =: (0!:0) inlocale
>>> remv =: (erase@<) inlocale
>>>
>>> I designed inlocale based on the JfC code for InLocales Conjunction [1]
>>>
>>> inlocale =: 2 : 0
>>> l =. gcurrent ''
>>> class =. {. @ copath n
>>> cocurrent class
>>> u y
>>> cocurrent l
>>> ''
>>> )
>>>
>>> This works in my tests.
>>>
>>> cocurrent 'base'
>>>
>>>
>>>    1. test01 =: 3 : 0
>>>    2.  c =. conew 'myclass'   NB. use copathnl__c '' to inspect
>>>    3.  try. hello__c ''
>>>    4.  catch.
>>>    5.   vs =. 'hello =: 3 : 0',CRLF,'smoutput ''hello''',CRLF,')'
>>>    6.   c addv vs
>>>    7.   hello__c ''
>>>    8.  end.
>>>    9.  smoutput copathnl__c ''
>>>    10.  c remv 'hello'
>>>    11.  smoutput copathnl__c ''
>>>    12.  destroy__c ''
>>>    13. )
>>>
>>>
>>> However, I do not understand two points:
>>>
>>> 1) When to design inlocale as an adverb (1 : 0) and when as a
>> conjunction(2
>>> : 0)?
>>> 2) How does inlocale get the 'n' it wants in the execution of the
>> statement
>>> number 6 & 10 in the test code?
>>>
>>> If this is already written down somewhere, please do point me to the
>>> reference.
>>>
>>> Thanks,
>>> Yuva
>>>
>>>
>>> [1]
>>>
>> http://www.jsoftware.com/help/jforc/writing_your_own_modifiers.htm#_Toc191734500
>>> ----------------------------------------------------------------------
>>> 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