elixir-lang Exploring Elixir First Class Functions Pure Functions Immutable Variables Recursion Non strict evaluation Statements Pattern Matching