A working document.
- basic types
- integer
- hex, octal, and boolean integer forms
- float
- scientific notation float form
- boolean
- atom / symbols
- binary
- <>/2
- binary_size
- binary special forms
- strings
- utf-8, unicode, byte_size vs string length
- ?/1
- list
- [head | tail] notation
- ++/2
- --/2
- hd/1
- tl/1
- length/1
- charlist
- tuple
- elem/2
- put_elem/3
- tuple_size/1
- functions
- anonymous functions
- multiple clauses
- is_function/1
- pipe operator
- anonymous functions
- advanced types
- port
- reference
- pid
- checking value type
- is_.+/1
- basic operators
- +/2
- -/2
- */2
- //2
- div/2
- rem/2
- round/1
- trunc/1
- logical operators
- or/2
- and/2
- not/1
- ||/2
- &&/2
- !/1
- comparison operators
- type comparison
- type order: number < atom < reference < function < port < pid < tuple < map < list < bitstring
- ==/2
- !=/2
- ===/2
- !==/2
- </2, <=/2
-
/2, >=/2
- type comparison
- pattern matching
- =/2
- deconstruction pattern matching
- on function signatures
- named and anonymous
- pin operator ^/1
- _ assignment
- control structures
- case
- cond
- if, unless, else
- do end blocks
- complex data types
- keyword lists
- keyed parameters collected for options
- maps
- nested data structures
- put_in/2, /3
- update_in/2, /3
- get_and_update_in/2, /3
- keyword lists
- Modules
- Compiling
elixirc
ebin
,lib
,test
- Scripts
- Named functions
- function captures
- &
- syntax
&(&1 + 1)
- invoking captures
- default arguments
- function headers
- function captures
- Compiling
- Recursion
- patterns
- reduce patterns
- mapping patterns
- tail call optimization
- Processes
- spawn
- send..receive
- links
- tasks
- state
- agents
- IO and Filesystem
- IO
- File
- Path
- Processes
- iodata
- chardata
- Multimodules
- alias
- require
- import
- only
- except
- use
- allows used module to inject any code
__using__/1
callback
- Module attributes
- annotations
- @vsn
- @moduledoc
- @doc
- @behaviour
- @before_compile
- as constants
- redefine vs accumulate
- annotations
- structs
- defining
- accessing and updating
- structs as maps
- default and required keys
- protocols (polymorphism)
- protocols on data types
- protocols on structs
- Any
- comprehensions
- generators
- filters
- into
- sigils
- try, catch, rescue
- errors
- throws
- exits
- after
- else
- typespecs
- behaviors
- @callback
- @behavior
- @impl
- dynamic dispatch
- metaprogramming
- style
- Eager vs Lazy
- Naming Conventions
- Writing assertive code with Elixir