Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling

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

by raiph (Chaplain)
on Dec 19, 2013 at 22:13 UTC ( #1067891=note: print w/replies, xml ) Need Help??

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

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.)

Replies are listed 'Best First'.
Re^12: A "Perl-7" that I could actually USE right now
by roboticus (Chancellor) on Dec 20, 2013 at 13:53 UTC


    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>


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


    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.

Re^12: A "Perl-7" that I could actually USE right now
by Anonymous Monk on Dec 19, 2013 at 22:49 UTC
    It shouldn't be this difficult to get you to be halfway honest, ralphie boy. This thread is six months old and you finally said something at least half true, but good on ya for making an attempt.

    Now tell us all how you *anticipate* the terrible documentation will *eventually* get some love in the next few months and post some out of context snippet of IRC featuring the name of someone you think I should care about.

      > ralphie boy.


      You already know my position regarding anonymous insults and bad behavior.

      Stay classy and watch your mouth or fight against reap-considerations!

      No further feeding from my side.

      Cheers Rolf

      ( addicted to the Perl Programming Language)

      Some of the positive things I have to say about P6 doc are in my Perl 6 documentation post which I updated last month.

      Larry Wall recently gained employment (with Craig's List) that frees him to focus on P6 spend (more) time on writing the P6 Camel. (In case it isn't clear, he's the one who said he'd write it, not me. I'm not promising. Just anticipatin'.)

      To help him on his way, the P6 Camel draft, ie. the specs, got a lot of love in 2013:

      • lizmat (who, to post something out of context, is a well loved winner of one of this year's White Camel awards) decided to spend 8 months (so far) systematically reading, correcting and clarifying the entire series of spec documents -- while learning and hacking on the core to boot. Thank you lizmat!

      • FROGGS, lizmat, et al are most of the way through a nearly year long process of redoing/elaborating the design of, and fully implementing, S11: Units and Modules.

      • lue recently drafted the all new S15: Unicode. (NB. Unlike with the new S11, S17, and S21, implementation in Rakudo of S15 has barely begun.)

      • jnthn landed an entirely new (and almost entirely implemented on JVM) S17: Concurrency. It's a lot cleaner than its predecessor.

      • S21: Calling foreign code was basically replaced this year by the much cleaner documentation for Rakudo's already implemented foreign code calling facility Zavolaj.

      • etc.

      I just remembered another significant doc improvement from 2013: the materials from the 2 day NQP workshop. With this we went from having very skimpy documentation of NQP, a key piece of the Rakudo compiler toolchain, to having sufficient documentation that folk who didn't attend the workshop can get up to speed on NQP.

      I'm sure I'm missing some other stuff but I think I'm done with this current round of exchanges with you. Feel free to make some closing comments. :)

        Do you know the difference between "documentation" and "specs"? One of those is for real human beings who want to program. The other is for people engaged in selfish and pointless activities, activities that do not help other people, and who think it's -OFUN to write and rewrite and rewrite compilers.

        Compiler notes are not "documentation". Comments in source code are not "documentation". Math puzzles on RC aren't "documentation". Advent calendars aren't "documentation". Specs that aren't finished and are always being edited or promised to be edited aren't "documentation".

        How can I be more clear about this?

        Two years later, and the docs are still as sad as this thread.

        The mascot should be an albatross, not that derpy bug.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1067891]
james28909 also walks around hunting for his cell phone while using its flashlight function

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (1)
As of 2018-05-20 16:21 GMT
Find Nodes?
    Voting Booth?