Think Perl 6: How to Think Like a Computer Scientist