├── README.md └── main.ex /README.md: -------------------------------------------------------------------------------- 1 | # intro-to-elixir -------------------------------------------------------------------------------- /main.ex: -------------------------------------------------------------------------------- 1 | ## Run Code in IEX (Interactive Elixir) 2 | 3 | ## Numbers - Integers and Floats 4 | 5 | 2 + 3 6 | 3 * 4 7 | 3 - 5 8 | x = 10 9 | ## 5.0 10 | x / 2 11 | 12 | # 255 13 | 0xFF 14 | 15 | 3.14159 16 | 17 | 3.0e-2 18 | 19 | div(5, 2) 20 | rem(5, 2) 21 | 22 | 99_999_999_999_999_999_999_999_999_999_999_999_999_999_123_871_293_871_902_387_102 + 23 | 99_999_999_999_999_999_999_999_999_999_999_999_999_999_123_871_293_871_902_387_102 24 | 25 | ## 1000000 26 | 1_000_000 27 | 28 | ## Atoms 29 | 30 | :atoms 31 | 32 | :"an atom" 33 | 34 | :"12387 &*^#2" 35 | 36 | var = :atom 37 | 38 | ## Aliases 39 | 40 | AModule 41 | # true 42 | :"Elixir.AModule" == AModlue 43 | 44 | alias IO, as: MyIO 45 | 46 | MyIO.puts("Hello" == IO.puts("Hello")) 47 | 48 | ## Booleans and nil 49 | 50 | true 51 | false 52 | true 53 | false 54 | 55 | # true 56 | true == true 57 | # true 58 | false == false 59 | 60 | true and false 61 | true or false 62 | not true 63 | 64 | nil 65 | nil 66 | nil == nil 67 | 68 | if 10 do 69 | IO.puts("true") 70 | end 71 | 72 | # prints true 73 | 74 | if nil do 75 | IO.puts("true") 76 | end 77 | 78 | # get back nil 79 | 80 | # short circuit 81 | nil || false || 4 || true 82 | true && 5 83 | !5 84 | nil && 5 85 | true && 5 && nil && false 86 | 87 | ## Tuples 88 | 89 | cat = {"Jazzpurr", 12} 90 | age = elem(cat, 1) 91 | put_elem(cat, 1, 13) 92 | cat = put_elem(cat, 1, 23) 93 | 94 | ## Lists 95 | 96 | numbers = [1, 2, 3, 4] 97 | length(numbers) 98 | Enum.at(numbers, 5) 99 | Enum.at(numbers, 3) 100 | 3 in numbers 101 | 5 in numbers 102 | 103 | List.replace_at(numbers, 0, 12) 104 | # [12, 2, 3, 4] 105 | List.insert_at(numbers, 3, 13) 106 | List.insert_at(numbers, -1, 13) 107 | 108 | [1, 2, 3] ++ [4, 5] 109 | [head | tail] = [1, 2, 3, 4, 5, 6, 7] 110 | # head = 1 111 | # tail = [2, 3, 4, 5, 6, 7] 112 | 113 | [1 | [2 | [3 | [4 | [5 | [6 | [7 | []]]]]]]] 114 | 115 | hd(numbers) 116 | tl(numbers) 117 | 118 | alist = [15, :atom, true] 119 | [:first | atlist] 120 | # [:first, 15, :atom, true] 121 | 122 | ## Maps 123 | 124 | empty = %{} 125 | sqrs = %{1 => 1, 2 => 4, 3 => 9} 126 | 127 | sqrs[1] 128 | sqrs[2] 129 | 130 | Map.get(sqrs, 3) 131 | Map.get(sqrs, 5) 132 | 133 | cat = %{name: "Jazzpurr", age: 12} 134 | cat.age 135 | cat.name 136 | cat[:name] 137 | cat[:age] 138 | 139 | older_cat = %{cat | age: 15} 140 | older_cat.age 141 | 142 | ## Binaries and Bitstrings 143 | <<1, 2, 3>> 144 | # <<0>> 145 | <<256>> 146 | # <<1>> 147 | <<257>> 148 | <<256::16>> 149 | <<1::4, 15::4>> 150 | <<1, 2>> <> <<3, 4>> 151 | 152 | ## Strings and Charlist 153 | "This is a String" 154 | "Add together #{3 + 4}" 155 | "\r \n \" \\" 156 | 157 | ~s("This is a string!") 158 | ~S(This is a String!) 159 | 160 | 'ABC' == [65, 66, 67] 161 | 'sum: #{3 + 5}' 162 | ~c(Character Sigil) 163 | # 'A String' 164 | String.to_charlist("A String") 165 | --------------------------------------------------------------------------------