Using that argument, every keyword is really an operator/macro.
Instead of sub/method/multimethod, we could use a special character.

sub foo { ... }

becomes

&&& foo { ... }

A method is >&&, a multimethod is *&&, and so on. (I don't have a
Unicode mail client or I'd look for a Unicode character.)

What I'm saying is that humans still have to read this language.
Humans read English, not a stream of characters that have modifying
effects on both their left and right hand sides. Streams of characters
that will parse different depending on what's happening around them.

Keywords are just a lot easier to work with.

Now, here's another possibility - have these operators live in
modules. If you really really want the (R) operator, then "use
Reduce::Operator;" and now I know when I read your code what
(R)[EMAIL PROTECTED] means, because it's documented somewhere.

But, don't put it in the core. I thought the core was supposed to be
sparse with modules to add the richness.

Rob

On 5/4/05, Larry Wall <[EMAIL PROTECTED]> wrote:
> On Wed, May 04, 2005 at 08:59:04AM -0400, Rob Kinyon wrote:
> : This may be a naive question, but what's wrong with just having a
> : keyword called reduce()? Why do we need an operator for everything?
> 
> Because it's an operator/macro in any event, with weird unary or
> listop parsing:
> 
>     reduce(+) @array
> 
> Larry
>

Reply via email to