Jump to content

Talk:Call a function: Difference between revisions

→‎Operators: yes, you can redefine any p6 operator in a lexical scope
m (Hey, I found some notes entitled "Metaoperators".)
(→‎Operators: yes, you can redefine any p6 operator in a lexical scope)
Line 27:
::Ok, cheers Tim. If that is the case, then I agree it was right to document it here. Like I say I don't know the language. Out of interest, if an operator is a function, can it be redefined? Is there an example of say, a redefinition of an addition function that is used for the addition operator? I plan to learn Perl 6 in future, when the compiler rolls down into Debian stable. [[User:Markhobley|Markhobley]] 06:34, 18 July 2011 (UTC)
:::Hey, I found some notes entitled "Metaoperators", that explains this operator/function stuff. Cheers all. [[User:Markhobley|Markhobley]] 06:42, 18 July 2011 (UTC)
::Yes, that's one of the nice things about treating operators as functions: they end up lexically scoped just like functions, and obey the same shadowing and/or multiple-dispatch rules. So if you define your own <tt>infix:<+></tt> it can either override or cooperate with any outer definitions of that operator. And even the metaoperators are just calls to higher-order functions underneath. These translations happen very early in the compilation; in a sense, all operators in Perl 6 are just convenient macros that rewrite the AST to a purer FP and/or OO form, and then either the early-binding lexical rules or the late-binding inheritance rules control which function gets called. We're pretty happy with how simple this foundation turned out, given everything we're trying to build on top of it.
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.