On Sun, Sep 18, 2016 at 16:49 Parrot Raiser <1parr...@gmail.com> wrote:
say { $_ } was the correct thing to use there. (I'm trying to avoid > any mention of O-O for the moment.) > “Trying to avoid any mention of O-O” seems like a Perl 6 obfuscation or golf constraint, not a desirable development or learning goal. Perl 6 doesn’t *force* you to write programs in an object-oriented style; you can do it in functional or procedural or whatever style suits you. But you’re going to have a bad time if you try to deny Perl 6’s fully OO nature. This is in stark contrast to Perl 5, where OO was bolted on, and you could say that the non-OO core was more “real” than the object-oriented sugar found in modules you had to use. Writing something like say($_) for reverse lines — which is what I think is closest to what you wanted — isn’t any more or less “object-oriented” than the more idiomatic .say for reverse lines;. In Perl 5, some rather byzantine rules governed the use of the implicit $_; almost all of the convenience afforded by those rules can be gained through the use of topicalized objects, so the byzantine rules are gone — but the convenience is gone too unless you’re willing to use the topic in the .foo style. I think perhaps you see a dot, and dot signifies OO, so the .say... version might *look* more OO than the say(... version in some sense, but that’s pretty much cosmetic. You’re *using* some objects by interacting with the Perl 6 core either way. It’s your choice not to write your logic in an OO style, but you can’t prevent OO from happening during execution. (This really isn’t some half-hearted attempt to force you into OO through the backdoor; you really can skip OO for all *your* logic. You just can’t pretend you’re not using an object-oriented language when you have to touch code you’re not in control of, whether an OO library or the Perl 6 core. But pretty much the entirety of what you need to know about OO if you choose to do that is various syntax and some desiderata about the calling semantics.) say {} was a "what happens if I do this" exercise. > > What is this -> ;; $_? is raw { #`(Block|170303864) … } output? > > On 9/18/16, Brent Laabs <bsla...@gmail.com> wrote: > > Remember you can call a block with parentheses: > > > >> say { 11 + 31 }; > > -> ;; $_? is raw { #`(Block|140268472711224) ... } > >> say { 11 + 31 }(); > > 42 > > > > > > On Sun, Sep 18, 2016 at 12:58 PM, Elizabeth Mattijsen <l...@dijkmat.nl> > > wrote: > > > >> I think you want: > >> > >> .say for reverse lines; > >> > >> not sure what you are trying to achieve otherwise, but: > >> > >> say { } > >> > >> producing something like > >> > >> -> ;; $_? is raw { #`(Block|170303864) … } > >> > >> feels entirely correct to me. :-) > >> > >> > >> Liz > >> > >> > On 18 Sep 2016, at 21:52, Parrot Raiser <1parr...@gmail.com> wrote: > >> > > >> > This code: > >> > 1 #! /home/guru/bin/perl6 > >> > 2 > >> > 3 # Ask for some lines and output them in reverse > >> > 4 # Work out the appropriate EOF symbol for the OS > >> > 5 > >> > 6 my $EOF = "CTRL-" ~ ($*DISTRO.is-win ?? "Z" !! "D"); > >> > 7 > >> > 8 say "Please enter some lines and end them with $EOF"; > >> > 9 > >> > 10 say { for reverse lines() {} }; > >> > 11 > >> > 12 # End > >> > produces this: > >> > Please enter some lines and end them with CTRL-D # obviously from > >> line 8 > >> > -> ;; $_? is raw { #`(Block|170303864) ... } # but > >> this? > >> > >> > > >