The Complete Course of the Raku programming language

Part 1. Raku essentials

Basic introduction to Raku and its compiler

Variables and data types essentials

Control flow essentials

More about types

Functions essentials

Part 2. Advanced Raku subjects

Debugging

Containers

Part 2. Advanced Raku subjects

Containers

  • Understanding Raku containers
  • Integers
  • Strings
  • Date and Time built-in support
  • Other data times
  • Understanding a sequence

Operators

  • Types of Raku operators (infix, prefix, etc.)
  • Overview of operators in Raku
  • Meta-operators
  • User-defined operators

Control flow

  • Phasers
  • Block-related phasers (e.g. LEAVE)
  • Other options (e.g., gather, given)

Subroutines

  • Signature
  • Multiple dispatch
  • More on MAIN subroutines
  • Nested subroutines
  • Anonymous subroutines

Modules

  • Creating modules
  • Using modules
  • Different types of importing (import, need, etc.)
  • Introspections
  • Installing modules from web

Part 3

Object-oriented programming

  • Classes in Raku
  • Attributes
  • Methods
  • Class methods
  • Subroutines vs methods
  • Inheritance
  • Roles
  • Introspection

Input and output

  • Standard input, output, and errors
  • Working with files
  • Working with directories
  • File streams

Exceptions

  • The try block
  • What is a soft failure
  • The CATCH phaser
  • Exception objects
  • Failure objects
  • Multiple dispatch in handling exceptions
  • Custom exceptions

Part 4

Regexes

  • Literals and character classes
  • Regexp matching
  • Quantifiers
  • Captures
  • Alternations
  • Anchors
  • Forward and backward assertions
  • Adverbs (such as :g etc.)
  • String substitution and replacement

Grammars

  • What is a grammar
  • Creating grammars
  • Rules
  • Tokens
  • Grammars vs. classes and inheritance
  • AST (Abstract syntax tree), make and made
  • Actions
  • Inline actions vs. action class

Part 5

Functional programming

  • Recursion
  • Reduction
  • Higher-order functions
  • Lambdas
  • Data feeds
  • Iterators
  • Lazy and infinite sequences

Concurrent programming

  • Junctions
  • Threads
  • Promises
  • Channels

Reactive programming

  • Supplies
  • Live and on-demand supplies
  • Understanding react
  • Understanding whenever
  • Understanding await

Web programming

  • Making remote connections
  • Simple HTTP client
  • Simple HTTP server
  • Cro 101

Appendix

  • List of quizzes
  • List of exercises

© 2021–2024 by Andrew Shitov