Search icon
Arrow left icon
All Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Newsletters
Free Learning
Arrow right icon
Perl 6 Deep Dive

You're reading from  Perl 6 Deep Dive

Product type Book
Published in Sep 2017
Publisher Packt
ISBN-13 9781787282049
Pages 402 pages
Edition 1st Edition
Languages
Author (1):
Andrew Shitov Andrew Shitov
Profile icon Andrew Shitov

Table of Contents (15) Chapters

1. What is Perl 6? 2. Writing Code 3. Working with Variables and Built-in Data Types 4. Working with Operators 5. Control Flow 6. Subroutines 7. Modules 8. Object-Oriented Programming 9. Input and Output 10. Working with Exceptions 11. Regexes 12. Grammars 13. Concurrent Programming 14. Functional Programming 15. Reactive Programming

Creating operators

Operators in Perl 6 are subroutines. In most cases, operator subs are multisubs. Consider, for example, the + operator. Its semantic is to add two values, which, in turn, can be of different types. You may ask Perl 6 to add two integers, floating points, or complex numbers. Or, the operands may be of different types in the same call, say, when adding a complex number and an integer. The same + operator also works fine with the types representing dates. To achieve all of this flexibility, Perl 6 uses multi subs.

Let's briefly lurk into the source code of Rakudo and search for a few definitions of the + operator:

multi sub infix:<+>(Int:D \a, Int:D \b)
multi sub infix:<+>(Num:D \a, Num:D \b)

multi sub infix:<+>(Complex:D \a, Complex:D \b) 
multi sub infix:<+>(Complex:D \a, Num(Real) \b)
multi sub infix:<+>(Num(Real) \a...
lock icon The rest of the chapter is locked
Register for a free Packt account to unlock a world of extra content!
A free Packt account unlocks extra newsletters, articles, discounted offers, and much more. Start advancing your knowledge today.
Unlock this book and the full library FREE for 7 days
Get unlimited access to 7000+ expert-authored eBooks and videos courses covering every tech area you can think of
Renews at €14.99/month. Cancel anytime}