http://www.perlmonks.org?node_id=1067891


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.

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

    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.