If we don't want to get the "line noise" libel all over again, there
are some features of the language that should probably go unmentioned
for a while. The ability to use non-ASCII characters in names may be
perfectly justifiable. When the cognoscenti have produced enough
decent code showing how to use the feature properly, it will be time
to admit to it. Just because you can play the accordion is no reason
to tell everyone about it. :-)*

On 4/12/16, Theo van den Heuvel <vdheu...@heuvelhlt.nl> wrote:
> Thanks again, I get it now.
> Theo
>
> Larry Wall schreef op 2016-04-12 17:00:
>> On Mon, Apr 11, 2016 at 11:32:29PM +0200, Theo van den Heuvel wrote:
>> : Thanks Larry for the answer and the great language.
>> :
>> : It is quite ok for me to start alphabetically. I use the funny char
>> : to indicate a particular aspect shared by a bunch of subs operators
>> : and methods.
>> : So I tried:
>> :
>> : method term:<braveā¤> { "Mel G.".say }
>> :
>> : However, that gives me:
>> :
>> : Bogus postfix
>>
>> Because it *is* a bogus postfix.  Nobody defined a postfix, so to the
>> parser, there's just random unicode gobbledygook after the dot.
>> Defining
>> a term only adds to the list of things the grammar recognizes when a
>> *term* is expected.  A term is not expected right after another term.
>> That's where a postfix or an infix is expected.  A term is expected
>> only at the beginning of an expression, or after an infix.  You can't
>> mix together terms and postfixes; their namespaces and usages entirely
>> disjunct.  Grammatical categories are very important to the
>> extensibility
>> of the parser, so that's not something we're going to try to guess at.
>>
>> On top of which, method names are off in the class's metaobject,
>> and don't participate in operator naming at all.  They have different
>> dispatchers: the operator is dispatched using the current set of nested
>> lexical scopes, while method calls are dispatched using the object's
>> set of parents and metaobjects.  This is how we keep OO from colliding
>> with functional programming.  You can make a method with any name you
>> like if you try hard enough, but that doesn't mean you can create
>> random
>> associations with an operator or term throughout your program.  The
>> scope
>> of the term you defined above will only be the lexical scope of the
>> class
>> itself, and it won't get exported to the place you are wanting to use
>> it,
>> even if you could use a term in postfix position, which you can't.
>>
>> Sorry I can't write more clearly this early in the morning...  :)
>>
>> Larry
>
>

Reply via email to