in reply to Apocalypse 3

Maybe I just haven't gotten my head around these new semantics for colons, but I can't resolve the described uses of colon with a function call, both for following an indirect object and for preceding an adverb.

First, Damian explains that colon is used to mark the indirect object for print: print $filehandle : $text_to_print; Later, Damian explains that colon is used to mark the adverb for a function: print sum @numbers_to_sum : $filter; In the first case, the syntax is function indirect-object : direct-object, and in the second case function direct-object : adverb. How is this apparent ambiguity resolved?

Replies are listed 'Best First'.
Re: Re: Apocalypse 3
by TheDamian (Vicar) on Oct 11, 2001 at 11:34 UTC
    ...colon is used to mark the indirect object...colon is used to mark the adverb...How is this apparent ambiguity resolved?

    Ambiguity
    Is a pebble on the road
    To enlightenment.

    There is no "adverb",
    Nor an indirect object,
    Nor direct objects.

    There's only colon --
    With arguments before it
    And others after.

    What we call those args --
    "Indirect", "adverb", "direct" --
    Is pure convention.

    It's up to each sub
    To decide how arguments
    Are interpreted.

    print may choose to treat
    Pre-colon as filehandle,
    Post-colon as list.

    On the other hand,
    sum might choose: Pre-colon -- list,
    Post-colon -- adverb.

    It's like the story
    Of two monks and Hui-neng
    Discussing a flag:

    "The flag is moving?"
    "Or is it the wind moving?"
    "It's your mind that moves!"

    Now we have the tale
    Of Chipmunk-san and Con Wei
    Discussing colons:

    "Colons mean 'adverb'?"
    "Colons mean 'indirectly'?"
    "Colons mean...colon!"

    It's how you use them
    In your sub that determines
    What purpose they serve.

      O Con Wei sama
      your noble way of speaking
      how did you learn it?

        I found the form in
        A dying scroll; the content,
        In a living Wall.