PragmaticBookshelf

PragmaticBookshelf

Forum Sponsor

Advanced Functional Programming with Elixir (PragProg)

Joseph Koski

Series editor: Sophie DeBenedetto @SophieDeBenedetto
Developmental editor Adaobi Obi Tulton @aotulton

Combine advanced functional programming concepts with production-ready Elixir and proven domain-driven design techniques to write cleaner, more thoughtful software. You’ll explore foundational ideas like equality, ordering, predicates, monoids, and monads—then go beyond syntax as you develop intuition for composing logic, modeling behavior, and growing systems. With a focus on maintainable, declarative code over theory, you’ll gain practical, composable patterns you can apply right away.

Get ready to manage crowds, adjust priorities, and keep everyone safe in FunPark, a place that never sits still. Your job is to model that complexity and build the systems that keep everything running smoothly, even as the business team is still figuring out what they want and the experts keep rewriting the rules.

Using core abstractions—equality, ordering, predicates, monoids, and monads—you’ll break problems into small, composable pieces that are both well-behaved and easy to combine. Rather than getting bogged down in theory or formal proofs, you’ll dive into real-world Elixir—using protocols, structs, and pattern matching to express shared behavior across your domain. Along the way, you’ll build the vocabulary and mental models you need to organize complex logic, supported by a production-ready open-source library you can use, extend, and explore in your own projects.

Whether you’re an Elixir developer mastering functional programming or a functional programmer exploring Elixir, you’ll discover how to write code that’s easier to reason about—and create systems that stay understandable, even as they grow.


Joseph Koski is a software engineer with expertise in functional programming, domain-driven design, and safety-critical systems. He created the Funx library, bringing tools like monads to Elixir. He writes at www.joekoski.com, sharing insights on functional programming, real-time systems, and using Elixir to solve complex, reliability-focused problems.


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

Most Liked

slouchpie

slouchpie

I just bought the book. I will start reading it over the weekend.

arcanemachine

arcanemachine

Alright, another one to add to the library!

P.S. Need to add “www” in the link to the author’s personal site.

MikeRocke

MikeRocke

Amazing! Thank you so much! Looking forward to this!

roriholm

roriholm

Looks like a great entry to the PP Elixir lineup. I look forward to lighting up a pipe or cigar and taking it in.

arcanemachine

arcanemachine

On a scale of 1-10 , would you recommend this book for someone who considers themself a “working man programmer” and not really reading for the theory or intellectual stimulation.

To answer your question directly, I would personally say “no”, but I still think the book is worth a read. (If you have to manage applications with a lot of complicated rules and are looking for a way to wrangle the complexity, I would probably say “yes”, the book may be directly useful to you.)

For me, this book was definitely very intellectually stimulating, and I feel like the techniques involved would be very useful in managing the organization of ever-increasing complexity. For example the book uses amusement park ride management as an example, but the same situation can happen with many legacy applications as the rules (and exceptions to those rules) grow like a cancerous tumor.

If the concepts in the book are applied properly, I do believe that they could be used to compose the logic required to manage some pretty complicated scenarios. Of course, I haven’t yet had the opportunity to do this, but I look forward to using this tool if I find a need for it in the future.

This book is pretty much a guided tour of the Funx library. It gives you the logical bits and pieces from that library, and shows how the different parts come together from the ground up, and how they work with each other.

I don’t know if it is essential to read the book before using the library, but I will say this: Before I read the book, I had no idea what any of the stuff in the Table of Contents meant, but after I read the book, it made perfect sense. I think that it would be a big undertaking to understand what’s happening in Funx without reading the book beforehand, unless you’re familiar with Haskell. (I believe that Haskell is the source of a lot of the concepts used in the book.)

Where Next?

Popular in Books Top

PragmaticBookshelf
Alexander Koutmos @akoutmos Elixir Patterns aims to surface the powerful and unique characteristics of the Erlang virtual machine and sho...
New
PragmaticBookshelf
Frank Hunleth @fhunleth Bruce A. Tate @redrapids edited by Jacquelyn Carter @jkcarter Want to get better at coding Elixir? Write a har...
New
PragmaticBookshelf
Bruce Tate @redrapids edited by Jacquelyn Carter @jkcarter OTP is the heart of the rapidly growing Elixir, the functional language at th...
New
PragmaticBookshelf
Rebecca Le and Zach Daniel @zachdaniel _edited by Kelly Lee @k.lee _ Ash Framework is the game-changing toolkit for Elixir developers. W...
New
CinderellaMan
Hands-on Elixir & OTP: Cryptocurrency Trading Bot by Kamil Skowron Want to learn Elixir & OTP by creating a real-world project...
New
New
AstonJ
by Fred Hebert This book intends to be a little guide about how to be the Erlang medic in a time of war. It is first and foremost a col...
New
AstonJ
by Benjamin Tan Wei Hao The Little Elixir & OTP Guidebook gets you started programming applications with Elixir and OTP. You begin w...
New
radar
:wave: You might remember me as the author of Joy of Elixir: https://forum.elixirforum.net/t/joy-of-elixir-self-published-free/ I’ve got...
New
AstonJ
by Lance Halvorsen Elixir and Phoenix are generating tremendous excitement as an unbeatable platform for building modern web application...
460 27162 124
New

Other popular topics Top

joaquinalcerro
Hi there, I am working with Ecto-Postgresql and I need to call all of the records from a specific table but the table has 40,000 record...
New
jerry
Good day to you all. I have been struggling to get a query involving like and ilike to work. Can anyone assist me on this, please? pro...
New
sergio_101
I am VERY much an elixir newbie. I have taken one elixir course and one phoenix course on Udemy. During that course, I saw the instructor...
New
malloryerik
Hi, this is for people who, like me, have had some friction using .html.heex templates in VSCode. The solution seems to be, in a hyphena...
New
lastday4you
I wanted to check elixir version in phoenix because i found that my elixir is 1.5 but when i use Enum.chunk_by it said the function is un...
New
aadeshere1
I have a another noob question about loop. Since elixir is immutable, while loop is not directly possible. total = 10 while total != 0 ...
New
vonH
When I run the Plug and I recompile I wind up having to use Ctrl C to quit iex and start again. Witht the help of rlwrap I can use the cu...
New
stefanluptak
Hello everybody, usually, I use a 29" ultra-wide monitor for VSCode which can easily accomodate explorer (files panel) + file with code ...
New
josevalim
Hi everyone, One of the features added to Elixir early on to help integration with Erlang code was the idea of overridable function defi...
New
TunkShif
This post is an instruction guide to help you setup your Neovim for Elixir development from scratch. It includes general information on h...
273 38985 115
New

We're in Beta

About us Mission Statement