| Atoms |
are integer + constant + NOT garbage collected |
use = name concepts + constant tables type lookup |
NOT convert user-input to atom |
| Arrays = NOT in Elixir! |
- |
random access is cheap + traversing O(n) + |
|
| Lists |
NOT arrays! + singly linked-lists + |
pattern matching on head is O(1) |
Appending at END of lists or LARGE lists |
| Maps |
|
random access O(log n) => useful for heavily edited data |
use MapSet when only Keys (uniqueness) |
| Strings |
are binaries => efficiently stored + copy is a FULL copy (unlike lists) |
|
DO NOT LET processes hold references to long string => may cause memory leaks + NOT use long strings for storing info + DONT concatenate |
| Tuples |
fixed length data structure |
use for tagging data + read chunks of data like csv |
slow append => don’t edit (if need to, use Maps) |
| Functions |
send function to data, NOT data to function |
|
|
| PATTERN matching |
allows multiple dimension inheritance (sort of) => better than inheritance!! |
|
|