The localed structure is very natural for keeping a resource open and bound to functions within it. (file or database/table)
A locale can be instanced along with a different resource of the structure it expects. There are of course ways to do that on a "global heap" with arrays of resources, but the paradigm, regardless of its ill-advisability, is natural in other languages, and so a natural approach to problem solving for many. ________________________________ From: Eric Iverson <[email protected]> To: Programming forum <[email protected]> Sent: Tuesday, April 25, 2017 7:31 PM Subject: Re: [Jprogramming] how do you pass a verb with a named object local to an adverb? 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 ? On Tue, Apr 25, 2017 at 1:30 PM, Xiao-Yong Jin <[email protected]> wrote: > Sorry, I misunderstood you. > > The problem is that I have global named states (large arrays) that needs to > hide from other names in different locales. For recursive or iterative > applications > I want to be able to keep the current state and continue at a later time. > > Such kind of thing seems simple to do in any object oriented languages, or > languages > support closure. Even in C, I would allocate a few structures, and pass > their pointers > to the same function in separate callings. I found it very difficult to > do in J > with locales. > > > On Apr 25, 2017, at 7:56 AM, Raul Miller <[email protected]> wrote: > > > > That was not my solution, that was me quoting and reformatting someone > > else's work. > > > > I have not attempted a solution, because I do not yet understand the > problem. > > > > Thanks, > > > > -- > > Raul > > > > > > On Tue, Apr 25, 2017 at 3:13 AM, Xiao-Yong Jin <[email protected]> > wrote: > >> Thanks for writing a long reply. I think it is better for us if I can > >> convince you that your solution does not work before discussing the > >> question about why. > >> > >> I've tried to rename my code so it should appear better to your > standard. > >> > >> in_z_=:2 :'(u`'''' ,&(,&''_''@:,@:>) n)~' NB.accepts global named verb > >> > >> aGlobalName=:0 > >> verbUsesAGlobalName=:3 :0 > >> aGlobalName + y > >> ) > >> adv=:1 :0 > >> echo u`'' > >> u y > >> ) > >> f=:3 :0 > >> C=.conew'base' > >> aGlobalName__C=:2 > >> z=.verbUsesAGlobalName in C adv 0 > >> codestroy__C'' > >> z > >> ) > >> fMiller =: 3 : 0 > >> s =. coname '' NB. save current locale > >> C =. conew 'base' > >> aGlobalName__C=:2 > >> cocurrent > C > >> v =. verbUsesAGlobalName f. > >> cocurrent > s NB. restore current locale > >> v adv 0 > >> ) > >> > >> Now in J session, > >> > >> f'' > >> ┌──────────────────────┐ > >> │verbUsesAGlobalName_0_│ > >> └──────────────────────┘ > >> 2 > >> fMiller'' > >> ┌─────────────────────────────────┐ > >> │┌─┬─────────────────────────────┐│ > >> ││:│┌─────┬─────────────────────┐││ > >> ││ ││┌─┬─┐│┌─┬─────────────────┐│││ > >> ││ │││0│3│││0│ aGlobalName + y││││ > >> ││ ││└─┴─┘│└─┴─────────────────┘│││ > >> ││ │└─────┴─────────────────────┘││ > >> │└─┴─────────────────────────────┘│ > >> └─────────────────────────────────┘ > >> 0 > >> > >> As to why, short answer: hiding names for global states that are only > useful for a few verbs and avoid name clashing. > >> > >>> On Apr 24, 2017, at 11:31 AM, Raul Miller <[email protected]> > wrote: > >>> > >>> I didn't read your code, because of how it was formatted when I > >>> received it. But that mostly probably means that I should have taken > >>> responsibility to reformat it. Thus: > >>> > >>> verbInClass_SomeClass_ =: plus > >>> plus_SomeClass_ =: + > >>> adv =: / > >>> > >>> NB. then how about this ? > >>> > >>> f =: 3 : 0 > >>> s =. coname '' NB. save current locale > >>> C =. conew 'SomeClass' > >>> cocurrent > C > >>> v =. verbInClass f. > >>> cocurrent > s NB. restore current locale > >>> v adv y > >>> ) > >>> > >>> But the real question should be: why would you want to do anything > like this? > >>> > >>> Conceptually speaking, locales should be used as "modules" where > >>> administrative needs put different people on different tasks. The > >>> class / object system then allows their work to be combined - perhaps > >>> not efficiently, but reducing the name conflict issues to a relatively > >>> manageable level. But that just justifies direct locale references. > >>> > >>> The indirect locale reference thing doesn't have this justification. > >>> The only places I have used it have been in the implementation of > >>> specifications which were designed for other programming languages. > >>> The resulting code tends to be extremely inefficient, but that tends > >>> to not matter for those kinds of problems. > >>> > >>> Which leads back to the question: why would you want to do this? > >>> > >>> We need some practical use cases, I think, so that's really not a > >>> rhetorical question, though I suppose it also might have some > >>> rhetorical value... > >>> > >>> For now, as other people have indicated, the resulting complexity > >>> (from the language not internalizing support for this issue) seems > >>> manageable in most cases, but it does require some detailed thought > >>> and a careful understanding of the differences between names > >>> (references) and values (an issue which tends to expose "painful" > >>> differences across any pair of languages). > >>> > >>> Or, that's my current opinion. > >>> > >>> Thanks, > >>> > >>> -- > >>> Raul > >>> > >>> > >>> On Sun, Apr 23, 2017 at 1:37 PM, roger stokes < > [email protected]> wrote: > >>>> NB. Suppose we have: > >>>> > >>>> > >>>> verbInClass_SomeClass_ =: plus > >>>> > >>>> plus_SomeClass_ =: + > >>>> > >>>> adv =: / > >>>> > >>>> > >>>> NB. then how about this ? > >>>> > >>>> > >>>> f =: 3 : 0 > >>>> > >>>> s =. coname '' NB. save current locale > >>>> > >>>> C =. conew 'SomeClass' > >>>> > >>>> cocurrent > C > >>>> > >>>> v =. verbInClass f. > >>>> > >>>> cocurrent > s NB. restore current locale > >>>> > >>>> v adv y > >>>> > >>>> ) > >>>> > >>>> > >>>> f 1 2 3 > >>>> > >>>> 6 > >>>> ------------------------------------------------------------ > ---------- > >>>> 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 > > ---------------------------------------------------------------------- > 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
