/elixir-school

Lessons in the Fundamentals of Elixir

Apache License 2.0Apache-2.0

Elixir School License

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.