What kind of mess it would be if you remove locale support.

I would argue that encapsulating using locale is central to J's growth.
Do you think you can remove locale in any of those important packages
distributed by JAL?  And they are solving a huge number of problems
for me.

On the flip side, I can also argue for you.  Since we can pass
atomic representation around in J, one only need a finite amount
of lists of boxed AR for each package, and with proper prefixing
(elisp people have been doing this for a long time), we don't need
encapsulating.

By the way, there is one feature of locale that I found superior than
any other programming languages that I know of.

save=:3 :0
  S=.conew>coname''
  ".@:('0 0$',],'__S=:',])&>nl 0
  S
)

Very handy in saving the current locale's global state.  You can modify
global names and come back to the current state just by cocurrent to
the saved locale later.  It almost like a time capsule.  You can do a
save inside a time capsule and create a nested time capsule.

> On Apr 25, 2017, at 8:49 PM, bill lam <[email protected]> wrote:
> 
> J program usually uses globals to share data. Encapsulation is a paradigm
> commonly used by other programming languages, but as said in other posts, J
> tends to focus on solving problems. Each programming language has its own
> style, J needs not imitate paradigm of other programming languages.
> 
> On 26 Apr, 2017 9:19 am, "Xiao-Yong Jin" <[email protected]> wrote:
> 
> 
>> On Apr 25, 2017, at 6:30 PM, Eric Iverson <[email protected]>
> wrote:
>> 
>> I have not followed this discussion at all and am probably way off base.
>> 
>> But how is:
>> 
>> allocate a few structures, and pass their pointers to the same function in
>> separate callings
>> 
>> different from:
>> 
>> allocated a few globals in an agreed upon locale (call it the heap),  and
>> pass their names (pointers) to the same verb in separate callings
>> 
>> ?
> 
> This question is actually right on spot, and I am struggling with this.
> There are two aspects of this problem in my opinion.
> 
> 1. Unnecessary copying of data, given the current state of the in-place
> operations in J.  To have a varied state in J, passing names to verb
> essentially amounts to the following operations,
> 
>   State =. State Verb Control   NB. akin to usual functional style
> 
> Most of the time J would make unnecessary copies of the data in State.
> I haven't found a reliable way to avoid extra copying, except for when
> the 'Verb' here is a primitive.
> 
> 2. Inconvenience, if you want to maintain a set of inhomogeneous states.
> I can do
> 
>   'State1A State1B State1C' = (State1A;State1B;State1C) Verb Control
>   'State2A State2B State2C' = (State2A;State2B;State2C) Verb Control
> 
> Apart from copying/boxing, there are too many names to keep track of.
> I would rather do
> 
>   Verb_1_ Control
>   Verb_2_ Control
> 
> I guess I'm just more familiar with the latter, because it resembles
> a common C function:
> 
>   void Verb(*Locale, const *Control)
> 
> Maybe I'm missing something in J.  Please feel free to correct me.
> 
> ----------------------------------------------------------------------
> 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