Programming Elixir 1.6 (Pragmatic Bookshelf)

PragmaticBookshelf
Is your current programming language ready for tomorrow? Elixir is. Elixir is a modern, functional language built on the Erlang VM.

Dave Thomas @pragdave

Is your current programming language ready for tomorrow? Elixir is. Elixir is a modern, functional language built on the Erlang VM. It features pattern matching, hygienic macros, protocols, and is surrounded with great tooling. And it inherits Erlang’s powerful process module and resilience.

Start by learning the basics of writing sequential Elixir programs: the language, the tools, and the conventions. Then use these skills to write concurrent code—applications that use all the cores on your machine, or all the machines on your network, both with and without OTP. Finally, explore Elixir’s more advanced features, from DSLs and code generation to extending the syntax.

This edition is fully updated with all the new features of Elixir 1.6, with a new chapter on structuring OTP applications, and new sections on the debugger, code formatter, Distillery, and protocols.


Dave Thomas is a programmer who likes to evangelize cool stuff. He cowrote The Pragmatic Programmer, and was one of the creators of the Manifesto for Agile Software Development. His book Programming Ruby introduced the Ruby language to the world, and Agile Web Development with Rails helped kickstart the Rails revolution."


  • Full details: Search
  • View this book’s portal and details on how to post errata and suggestions here.

Don’t forget you can get 35% off with your Devtalk discount! Just use the coupon code “devtalk.com" at checkout :+1:

Latest Threads About This Book Top

Rope-a-dope
@pragdave I think all the annoymous functions in the exercise solutions miss the “&” because we will get error: capture argument &amp...
New
Rope-a-dope
@pragdave Two typos. The correct one should be: defp center_one_string(field_width, {string, length}) do ~s[#{String.duplicate(" "...
New
Rope-a-dope
@pragdave The correct one should be defmodule Hello.Elixir do def span(from, to) when from > to, do: [] def span(from, to), do: [...
New
briankung
The provided solutions have a few typos or errors, this one in particular tipped me over into submitting errata: defmodule MyList do ...
New
robbystk
On page 337, in the description of the count/1 function of the Enumerable protocol, the return value in the uncountable case is incorrect...
New
dewetblomerus
I first thought it was some fancy “Plural” for directory that only highly intelligent people like Dave know about, but then I realized th...
New
GermaVinsmoke
The terminal command to run the function on page 150 of Transformation: Fetch from GitHub section is - mix run -e 'Issues.CLI.run(["-h"]...
New
dewetblomerus
It is the first example on page 72, the one with the highlighting. [ 1 | [ 2 | [ 3 | [] ] ] Needs to be changed to: [ 1 | [ 2 | [ 3 ...
New
bradleyscollins
The code here does not follow from previous sections, making it difficult to identify the changes Mr. Thomas intends to introduce under t...
New
melston
After following the instructions pretty successfully up to this point I find I can’t do a mix docs with the configuration given. I’m not...
New

Most Active This Week Top

Most Active This Month Top

Most Active This Year Top

briankung
The provided solutions have a few typos or errors, this one in particular tipped me over into submitting errata: defmodule MyList do ...
New
Rope-a-dope
@pragdave The correct one should be defmodule Hello.Elixir do def span(from, to) when from > to, do: [] def span(from, to), do: [...
New
Rope-a-dope
@pragdave Two typos. The correct one should be: defp center_one_string(field_width, {string, length}) do ~s[#{String.duplicate(" "...
New
Rope-a-dope
@pragdave I think all the annoymous functions in the exercise solutions miss the “&” because we will get error: capture argument &amp...
New

Most Active Last Three Years Top

melston
After following the instructions pretty successfully up to this point I find I can’t do a mix docs with the configuration given. I’m not...
New

Most Active Over Three Years Top

PragmaticBookshelf
Is your current programming language ready for tomorrow? Elixir is. Elixir is a modern, functional language built on the Erlang VM. ...
New
kentaroi
Same as String.next_codepoint(str), next_grapheme(str) returns nil if str is empty. https://github.com/elixir-lang/elixir/commit/87fee37...
New
bradleyscollins
The code here does not follow from previous sections, making it difficult to identify the changes Mr. Thomas intends to introduce under t...
New
GermaVinsmoke
The terminal command to run the function on page 150 of Transformation: Fetch from GitHub section is - mix run -e 'Issues.CLI.run(["-h"]...
New
dewetblomerus
It is the first example on page 72, the one with the highlighting. [ 1 | [ 2 | [ 3 | [] ] ] Needs to be changed to: [ 1 | [ 2 | [ 3 ...
New
robbystk
On page 337, in the description of the count/1 function of the Enumerable protocol, the return value in the uncountable case is incorrect...
New
dewetblomerus
I first thought it was some fancy “Plural” for directory that only highly intelligent people like Dave know about, but then I realized th...
New
veimis
I hope this will prove useful for other readers of the book. I was working through chapter 20 OTP: Applications and run to issues with t...
New
devployment
Hello, in the ebook we have links the following http://forums.pragprog.com/forums/322/topics/Exercise:%20PatternMatching-1 Following t...
New
kentaroi
def puts(device \\ group_leader(), item) do         erl_dev = map_dev(device)         :io.put_chars erl_dev, [to_iodata(item), ?\n] en...
New
kentaroi
We have to include use ExCheck use ExUnitProperties at the top to include the property test framework. ExCheck was used in Programming ...
New
kentaroi
There may be other errata in the result of $ mix test test/doc_test.exs in page 177, but at least: 6 tests, 1 failures 5 doctests, 1 fa...
New

Get money off!

The Pragmatic Bookshelf

35% off any eBook

Simply use coupon code "devtalk.com" at checkout. See full details here.