Welcome to this incredible journey! This is the beginning of an odyssey that will take you through the many features of Elixir, and how to use them to build, test, deploy, and maintain applications. This journey may require some shifting of your mindset and how you think about programming (and problem-solving in general) if you're not already familiar with functional programming.
Before diving into this book, we want to point out that this introductory chapter is deliberately short. Although we'll be introducing the language, its tooling, and its ecosystem, this won't be a complete reference guide. Elixir treats documentation as a first-class citizen, and this is shown in the incredible documentation of its modules and functions. Hence, we decided to teach you how to search for what you need, and target on the core concept of book–building an Elixir application. We think that this pragmatic approach is the one that delivers the most value to you, as you'll be able to follow an application right from its inception and into its production, including its deployment and monitoring, which are sometimes overlooked.
In this chapter, we will cover the following topics:
- Data types in Elixir
- Working with pattern matching and how to apply it to various types
- Working with functions and bundling them in modules
- Working with collections
- Using classic control-flow constructs (such as case)
- Using typespecs on your functions
- Creating behaviours, and adopting them in other modules
- Using protocols to make our functions polymorphic
- Some of the most useful tools that ship with Elixir
- Calling Erlang libraries directly
- Interacting with operating system processes through ports