Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re^10: A "Perl-7" that I could actually USE right now

by Anonymous Monk
on Dec 19, 2013 at 16:45 UTC ( [id://1067835]=note: print w/replies, xml ) Need Help??


in reply to Re^9: A "Perl-7" that I could actually USE right now
in thread A "Perl-7" that I could actually USE right now

Deny, deflect, defer. Sorry ralph, your kool-aid mustache is showing. Maybe this is the year Perl-6 decides if for loops are really eager or lazy. Maybe this is the year someone finishes the module synopsis. Maybe this is the year Patrick finishes the list redesign. Maybe this is the year Larry finally chooses names for synchronization primitives. Maybe this is the year you admin Necza has finally shuffled off into Pugs-like irrelevance.

Deny, deflect, defer.

It's not unkind to point out untruths, ralph. Surely even you know that.

  • Comment on Re^10: A "Perl-7" that I could actually USE right now

Replies are listed 'Best First'.
Re^11: A "Perl-7" that I could actually USE right now
by raiph (Deacon) on Dec 19, 2013 at 22:13 UTC
    »»» This post is about the immature Perl 6, not the rock solid Perl 5 «««

    Thank you for raising issues others might find interesting.

    • if for loops are really eager or lazy.

      By design they default to eager in sink (void) context because there's no point in having a lazy for loop in sink context. In all other contexts they default to the appropriate setting, Mostly Lazy. You can explicitly force eager or lazy context by using the eager or lazy keyword. It's been this way for years and remains how things are.

      After experience with coders using P6, Larry this year made a change to "support the expectations of imperative programmers". It doesn't change the basic logic described above. Afaik, all who've spoken up on #perl6 support this change.

    • someone finishes the module synopsis.

      Synopsis 11 (Units and Modules) had been under specified and largely unimplemented for years but that changed this year, especially in the last 6 months, as suggested by Perl 6 Advent Day 11 – Installing Modules. If FROGGS' English skills are too weak for you, please wait for him (or lizmat or lue or whoever) to commit a new S11, anticipated in the next month or two, that will hopefully make clear the tremendous advancement in this area this year.

    • Patrick finishes the list redesign.

      That would be nice. You know why he hasn't yet done so, right? (Please don't say you don't care.)

    • Larry finally chooses names for synchronization primitives.

      When jnthn recently created some detailed designs for concurrency constructs, and implemented them, he used placeholder syntax and names. Larry replaced the placeholders the first day he got to see them and has since refined his thinking about this a couple times and will no doubt do so more as this stuff matures.

    • you admin Necza has finally shuffled off into Pugs-like irrelevance.

      Stefan O'Rear, Niecza's original author, has not worked on Niecza this year iirc, and doesn't seem interested in it. Others have landed a few commits this year but it's clearly falling behind Rakudo in terms of spec coverage.

      (I must confess I was delighted when Stefan chose to do some major work on Rakudo rather than Niecza in June/July. He wrote the system level synchronization primitives that were the groundwork for the concurrency constructs just discussed. That said, I've not seen signs of him since.)

      raiph:

      I was looking over the documentation you linked to, and came across "Parcel Objects":

      The comma operator (infix:<,>) creates Parcel objects. These should not be confused with lists; a Parcel represents a raw syntactic sequence of elements. A Parcel is immutable, although the elements of a Parcel may be either mutable or immutable.

      The name "Parcel" is derived from the phrase "parenthesis cell", since many Parcel objects appear inside of parentheses. However, except for the empty parcel, it's the comma operator that creates Parcel objects.

          ()       # empty Parcel
          (1)      # an Int
          (1,2)    # a Parcel with two Ints
          (1,)     # a Parcel with one Int
      

      A Parcel is also Positional, and uses flattening context for list operations such as .[] and .elems. See "Flattening contexts" below. For raw access to the arguments without flattening, you may use .arg($n) instead of .[$n], and .args instead of .elems.

      This looks confusing to me: Isn't there a concern that there appear to be two special cases* leading to different results here? It seems to me that having (1) evaluate to an integer and the others evaluate to a parcel could be problematic. What's the thought behind that?

      The second oddity in that document is in the section "The .infinite method". The table looks wrong:

          .infinite     Meaning
          ----------------------------------------------
          True          iteration is known to be infinite
          False         iteration is known to be finite
          Mu            finiteness isn't currently known
      

      I'm no expert, but I'm pretty sure that The Daily WTF? clearly established that the third state of a boolean value is FILE_NOT_FOUND.</ribbing>

      Notes:

      * The second special case being empty parenthesis evaluating to a parcel.

      ...roboticus

      When your only tool is a hammer, all problems look like your thumb.

        Hi roboticus,

        Thanks for taking a peek at P6 and being brave enough to talk about it. :)

        You are of course not the first to express surprise about () being a parcel even though it contains no commas, and (1) not being a parcel even though it is in parentheses. And you're not the first to express concern -- won't this aspect of the language lead to problems?

        I read the entire #perl6 log every day and have done for over 2 years. I don't recall anyone reporting actual problems related to this.

        Which might be because the rule (it's about commas, not parens) works out fine. Or might be because no one is writing P6 code using one item parcel literals. (Of course, some may say I could easily stop at "code" there.)

        Anyhoo, Larry has said he doesn't think it's a problem in practice and thus far it seems he's right.


        FILE_NOT_FOUND will mess up the table formatting which might delay getting to 6.0.0.

        Ideally we'd have a value that is at least as huffmanized and mnemonically appropriate as Mu (which, btw, stands for "Most Undefined" among many other meanings such as Modern Undef and 無).

        How about P6? Isn't that a good answer to "True? False? Who knows?"


        You know, there's something very spooky about all this. Just as at least one (1) other person has already been troubled by zero and one item parcel literal syntax, so too at least one (well, actually, exactly, one) person has talked on #perl6 about using FILE_NOT_FOUND in P6 code and, while one might be tempted to dismiss him because he proposed the utterly illogical notion of it being an aspect of Falsehood, the real truth of the matter is that THEIR NAME RHYMES WITH MU.

        Anyhoo, I think you should consider visiting #perl6 and asking lue to discuss P6.

    A reply falls below the community's threshold of quality. You may see it by logging in.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1067835]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others sharing their wisdom with the Monastery: (4)
As of 2024-11-06 08:30 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    chatterbot is...






    Results (32 votes). Check out past polls.