Re: boo-boo in run docs?
[email protected] (ToddAndMargo via perl6-users) Tue, 11 Nov 2025 23:16:24 -0800
| Newsgroups | perl.perl6.users |
|---|---|
| Message-ID | <[email protected]> |
On 11/11/25 5:55 AM, Peter Pentchev wrote: > On Tue, Nov 11, 2025 at 04:44:42AM -0800, ToddAndMargo via perl6-users wrote: >> On 11/6/25 3:58 PM, Peter Pentchev wrote: >>>> exitcode >>>> should have been included in the examples in run's documentation. >>>> And exit code should have been included in the definition of >>>> Proc, not buried at the end of the document, >> >>> It is in the definition. It is listed as one of the methods, because >>> that is what it is. "The end of the document" is the section that >>> lists all of the methods that you can call. >> >> .exitcode in not a method. The value is an integer. > > No, "$.exitcode" is an internal field that you do not have > direct access to. The only reason you know about that field right now is > that you looked at the source code of the class; programs that use > objects of the Proc class cannot access it directly. > > The "exitcode" method, on the other hand, is what Raku creates > automatically when the source code says "has $.exitcode". It will > read the value of the internal "$.exitcode" field and it will return > that value to you. If you have a variable called $proc and it is > a Proc object, then you can call that method in two main ways: > > say $proc.exitcode() # see, it's a method with no arguments > > say $proc.exitcode # Raku allows you to omit the parentheses > > That second way is the standard Raku way to let programs access > the fields of an object that they are allowed to: the class > says "has $.field" and Raku automatically generates a method > called "field" that you can call with or without the parentheses. > The internal variable that is called $.exitcode is not really > visible to your program; the only way for you to get that exit code > is to invoke the method that is called "exitcode"... > > ...and that is described in "Methods" section of the Proc documentation. > >> So what your are saying, correct me if I misinterpret you, >> is that >> >> .exitcode, >> .signal >> .pid >> @.command >> >> Should all go at the end becasue somewhere in the run command, >> methods are used to populate them? > > Not exactly. The $.exitcode, $.signal, $.pid, and @.command > INTERNAL variables are not documented on purpose - your program > does not have any way to access them directly. > > However, the way they are defined in the source code means that > Raku has automatically generated the "exitcode", "signal", "pid", > and "command" methods for you to call to get those values... > > ...and those methods are all described in the "Methods" section > of the https://docs.raku.org/type/Proc page :) > > And they are described in the "Methods" section of the "Proc" page > because that's where they belong - because they are methods of > the "Proc" class. A function that returns an object of the type > "Proc" does not need to document anything you can do with that > object, just as a function that returns an object of the type "Int" > does not need to document anything you can do with that object. > > I mean, the Str class has a method called "chars" that you call to > figure out how many characters there are in a string. Now do you > think that the documentation of the string class should tell you > stuff like "oh, and once you call chars, you can then do several > things with that value, like you can call is-prime to figure out > whether that is a prime number, or you can call sign to figure out > whether this is a positive or a negative number, or you can > call sqrt to get the square root of that number"? No, none of > that belongs in the Str class, because it has nothing to do > with strings; however, it is documented in the Int class, the Real > class, the Numeric class and so on. > > So just as the documentation of Str does not tell you that you can > do $name.chars.sqrt, so the documentation of run() does not tell you > that you can do run().exitcode. The documentation of Str says > that "chars" returns an Int; the documentation of "run" says > that it returns a Proc. > > G'luck, > Peter > Hi Peter, No objection here. I am also marveling at your technical writing. You stated the information very clearly. I have a hard time with technical writing and you really impressed me with yours. -T Now I will go wash my mouth out with soap! :-)