GitHub - lee-dohm/elixir-school: Lessons in the Fundamentals of Elixir

Lessons in the Fundamentals of Elixir, inspired by Twitter's Scala School.

Your feedback and participation is encouraged, see Contributing for more details.

About Elixir

"Elixir is a dynamic, functional language designed for building scalable and maintainable applications." — elixir-lang.org

Elixir leverages the battle tested ErlangVM to build distributed and fault-tolerant systems with low-latency out of the box.

Features:

  • Scalable
  • Fault-tolerant
  • Functional Programming
  • Extensible

Lessons

Basics

  1. Basics - Setup, basic types and operations.
  2. Collections - List, tuples, keywords, maps, dicts and functional combinators.
  3. Enum - A set of functions for working with collections.
  4. Pattern Matching - Match operator, matching, and the pin operator.
  5. Control Structures - The if/2, unless/2, case, and cond structures.
  6. Functions - Anonymous functions, named functions, and guards.
  7. Composition - Modules, module attributes, and structs.
  8. Mix - Build tool, dependency manager, and CLI tasks.
  9. Testing - ExTest and testing best practices.

Advanced

  1. Concurrency - Processes, Agents, and Tasks.
  2. OTP Behaviors - GenServer, GenEvent, and Supervisors.
  3. Distribution - Distribute work to remote nodes.
  4. Elixir + Erlang - Interoperability with Erlang.
  5. Meta-Programming - Macros, quote, and unquote.
  6. Hex Packages - Packaging and sharing functionality with the community.

Specific Tools

  1. Plug - Composable modules for web applications.
  2. Ecto - Database wrapper and query language.
  3. ETS - Erlang Term Service
  4. Mnesia - A distributed soft real-time database system in Erlang.