"Michael G Schwern" <[EMAIL PROTECTED]> wrote:
> This is just your friendly neighborhood curmudgeon reminding you that in
> Perl 6, everything is an object
> ...
> Instead of introducing new built-in functions they can be done as methods.

The problem with this worldview is that you end up with horrible
asymmetries suh as:

>    1 + 2 == 3
>
> would suck as:
>
>    (1 + 2).eq 3

There is a difference between verbs and noun. Sometimes you don't want
to associate a verb with an object: you want to associate it with the
subject:

"the cat sat on the mat"

is that

  the_mat.sat_on(the_cat)
or
  the_cat.sat_on(the_mat)
or
  sat_on(the_cat, the_mat)

All of those seem to loose the preposition. Are sat_on and sat_beside
really completely independent things? Under perl's grammar: yes. Seems
to me that identifiers have a complex fusional word-structure, which is
opaque to the grammar of the language. The more structure you can
expose into the parse tree, the more powerful will be manipulations on
that tree.

Perl6 allows there different worldviews, but we need to make sure that
verbs are as entensible as nouns. Multimethods are wonderful things.
Don't add something as a method if it makes more sense as a
multi-method. Don't use an asymmetric method syntax for a
symmetric concept.

To say "everything is an object: extend by adding methods" elevates
Nouns over Verbs. And it completely ignores all the other parts of
the language. Sometimes people seem to think that the only alternative
is to add built-ins: but this really shouldn't be the case -- not in a
language as powerful as Perl6.


Dave.


Reply via email to