I think you're confusing this with the restrictions for ::requires. Sent from my iPhone
On Jun 5, 2011, at 3:34 PM, "Mike Cowlishaw" <m...@speleotrove.com> wrote: > As far as I recall, REPLY can't be used unless there's some kind of :: > directive in a program (at the bottom!). Always thought that was an > unnecessary restriction. > > Mike > > From: Jean-Louis Faucher [mailto:jfaucher...@gmail.com] > Sent: 05 June 2011 18:49 > To: Open Object Rexx Developer Mailing List > Subject: Re: [Oorexx-devel] Reply in routines, possible ? (Re: Reply in > native method ? > > Hi Rony > > 2011/6/5 Rony G. Flatscher <rony.flatsc...@wu-wien.ac.at> > would it be possible to have the REPLY keyword statement for routines? > > If I remove the test context->inMethod() then reply *seems* to work from a > ::routine (tested with a tiny script). > But this is not a proof that it would work all the times. > It crashes when called from an internal routine. > > There are quite a few cases, where using routines and multithreading > would seem to be easier to comprehend and to apply, if REPLY was > available for routines. > > A good old class method is almost as simple as a ::routine. I don't see any > gain of functionality if we allow to reply from a ::routine, unless we allow > also to expose some variables from a ::routine. > > [digression] > > Instructions that can be called only from methods : > > expose : I still don't understand why it's not possible to expose variables > from a ::routine... > If we do a relation with > - anonymous inline functions (often called lambda or block), > - outer environment (the variables used by the lambda, which are not > parameters), > - and closure (which is the outer environment which remains associated to the > lambda, even when the lambda is called outside the definer's scope), > then the exposed variables would be the variables to retain in the closure. > Most of the languages don't require to declare the variables to capture, but > C++ lets optionally declare them, and that remind me the functionality of our > expose : > ----- c++ > std::vector<int> some_list; > int total = 0; > std::for_each(some_list.begin(), some_list.end(), [&total](int x) { total > += x; }); > ----- oorexx (with extensions) > some_list = .array~of.. > total = 0 > some_list~each([expose total; total += arg(1)]) > ----- > C++ lets capture a variable by value or by reference. In ooRexx, expose is > always by reference, right ? Currently, only internal procedures allow to > expose variables, but internal procedures can't be manipulated like > routines... > In the example above, there is a need of closure, because the lambda is > called in the context of the 'each' method, which is not the context of the > definer (i.e. 'each' does not - and could not - expose the 'total' variable). > > > forward : nothing to say > > > guard : in relation with the object variables dictionary (ovd). I don't know > if the routines have a similar concept like caller variables dictionary (cvd > ?). And I don't know if that would make sense to manage synchronisation on > this cvd. Probably yes, synchronisation would be necessary if we allow > - reply and expose in ::routine > - expose and closure (even if no reply in ::routine, because thanks to the > closure, a routine can be passed as argument to methods which reply, and then > call the routine which will access to the exposed variable of the closure). > > reply : already discussed > > Jean-Louis > > ------------------------------------------------------------------------------ > Simplify data backup and recovery for your virtual environment with vRanger. > Installation's a snap, and flexible recovery options mean your data is safe, > secure and there when you need it. Discover what all the cheering's about. > Get your free trial download today. > http://p.sf.net/sfu/quest-dev2dev2 > _______________________________________________ > Oorexx-devel mailing list > Oorexx-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/oorexx-devel
------------------------------------------------------------------------------ Simplify data backup and recovery for your virtual environment with vRanger. Installation's a snap, and flexible recovery options mean your data is safe, secure and there when you need it. Discover what all the cheering's about. Get your free trial download today. http://p.sf.net/sfu/quest-dev2dev2
_______________________________________________ Oorexx-devel mailing list Oorexx-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/oorexx-devel