How to teach functional programming? What are the proper steps, beyond the first ones? Especially when you can't or don't want to point to a framework and say "we do it this way!" Lars outlines his ideas for teaching Elixir to someone without requiring any prior programming experience. There is also discussion of mapping, reducing, and representing one in terms of the other. Also things which are better in Haskell than Elixir, perfectly named modules, and - inevitably - why you don't just use Rust instead. Links Chalmers CakeML Elixir in action - Saša's Elixir book Monad Map Reduce Filter MapReduce Elixir's enum module Multiple function heads in an anonymous function Immutability Guards in Elixir and Haskell Witchcraft - the module Nerves Frank Hunleth REPL Quotes It felt like I cheated, I don't know if I did In my bone marrow! Putting the module before the functions Try to explain a monad (there is no second step) Pretend that the rest of computing doesn't exist Ignore the rest of the world Save brain cycles Solid, sound, and true It's going to have to be a reduce I never really updated my map