That would be good, thank you.
On Thu, Aug 18, 2022 at 12:19 PM Henry Rich <henryhr...@gmail.com> wrote: > > I must have lost the test for 'explicit definition running' during one > of the rewrites. > > The original (6.02) seems to have it that xyuv are stacked by value when > an explicit definition is running. (Not mn). uv must be stacked by > value because they are passed as verb arguments into modifiers; xy > needed that treatment in 6.02 because they might be verb arguments, but > that usage has been eliminated. > > I will change it so that only u v u. v. are stacked by value (and thus > get value error if undefined), and only when used while an explicit > definition is running. > > x y m n will be like any other names. > > Henry Rich > > On 8/17/2022 2:41 PM, Jose Mario Quintana wrote: > > Yet, as I recall, some change in behavior was introduced rather recently, > > > > NB. Fresh sessions... > > > > > > 9!:14'' > > j902/j64/windows/beta-l/commercial/www.jsoftware.com/2020-11-05T15:47:37/clang-9-0-0/SLEEF=1 > > > > x&y > > x&y > > > > > > 9!:14'' > > j903/j64/windows/release-a/commercial/www.jsoftware.com/2021-12-16T15:20:38/clang-13-0-0/SLEEF=1 > > > > x&y > > |value error > > | x& y > > > > > > See, > > > > [Jprogramming] "accessor" concepts (jsoftware.com) > > http://www.jsoftware.com/pipermail/programming/2021-September/058773.html > > [Jprogramming] "accessor" concepts (jsoftware.com) > > http://www.jsoftware.com/pipermail/programming/2021-September/058775.html > > > > and > > > > [Jprogramming] "accessor" concepts (jsoftware.com) > > http://www.jsoftware.com/pipermail/programming/2021-September/058776.html > > > > > > > > > > On Tue, Aug 16, 2022 at 11:52 PM Henry Rich <henryhr...@gmail.com> wrote: > >> Ah, now I remember. > >> > >> First, a little detail: when you have the name 'func' in a sentence, and > >> func is defined as a non-noun, what actually gets put onto the execution > >> stack is > >> > >> 'func'~ > >> > >> This is what we mean by a 'reference' to the name func. The reference > >> is a non-noun, and when it gets executed, the name 'func' is looked up > >> (again) and its value is executed. > >> > >> [For those of us who worry about clock cycles (a set whose cardinality > >> is perhaps one), the second lookup is wasted effort, and all the more > >> vexing because of search paths and multiple threads; whence we have > >> nameref caching and special treatment of nameless adverbs and one-word > >> references.] > >> > >> Using references, a tacit function can refer to an undefined name, and > >> as long as the name is resolved before the function is /executed/, all > >> will be well. > >> > >> BUT. Consider the sentence (in an explicit modifier): > >> > >> u otherverb y > >> > >> What should be stacked for u? 'u'~ will not do, because that reference > >> will be passed to otherverb, in whose space u will not have the right > >> value when it is looked up. No, u must be passed by /value/; and > >> because there is no way to tell where a stacked value will go, /any/ > >> reference to u or v must be stacked by value (that is, its value is > >> stacked instead of 'u'~). > >> > >> What I have shown here is that u and v must be stacked by value rather > >> than by reference, always. > >> > >> In earlier versions of J, x and y were sometimes verb arguments to > >> modifiers (like modern u and v). Thus they too were stacked by value > >> always, as being easier than deciding when they needed to be values. > >> > >> And then m and n were treated the same way, because since they have to > >> be nouns anyway why not? > >> > >> Then, when a name that must be stacked by value is undefined, what is > >> there to do? Nothing except value error. > >> > >> Henry Rich > >> > >> > >> > >> On 8/16/2022 2:40 PM, Henry Rich wrote: > >>> The names mnuvxy have always been special, giving value error if they > >>> are not defined. I'm not sure that's necessary now, but that's how it > >>> is. > >>> > >>> The reason for having undefined names stack a reference is so that you > >>> can have recursive definitions. The need for that is less with mnuvxy. > >>> > >>> Henry Rich > >>> > >>> On 8/16/2022 2:30 PM, David Lambert wrote: > >>>> I think you've already explained this, but I don't recall why x and y > >>>> should have special status in global namespace. Perhaps I need to > >>>> study the current documentation and release notes? > >>>> > >>>> $ j > >>>> JVERSION > >>>> Engine: j904/j64avx2/linux > >>>> Beta-e: commercial/2022-07-16T19:24:59 > >>>> Library: 9.04.01 > >>>> Platform: Linux 64 > >>>> Installer: J904 install > >>>> InstallPath: /home/lambertdw/downloads/installs/j904 > >>>> Contact: www.jsoftware.com > >>>> > >>>> x&y > >>>> |value error > >>>> | x& y > >>>> X&Y > >>>> X&Y > >>>> > >>>> i_used_to_be_a_verb > >>>> |value error: i_used_to_be_a_verb > >>>> > >>>> Thanks, Dave. > >>>> > >>>> ---------------------------------------------------------------------- > >>>> For information about J forums see http://www.jsoftware.com/forums.htm > >>> > >> > >> -- > >> This email has been checked for viruses by AVG antivirus software. > >> www.avg.com > >> ---------------------------------------------------------------------- > >> For information about J forums see http://www.jsoftware.com/forums.htm > > ---------------------------------------------------------------------- > > For information about J forums see http://www.jsoftware.com/forums.htm > > > -- > This email has been checked for viruses by AVG antivirus software. > www.avg.com > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm