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

Reply via email to