Cheggin out FP languages
| elixirChecked out the latest and greatest developer roadmap and noticed being recommended to learn a functional language. Read through a lot of opinions on which language to choose and I’m considering both Elixir and Clojure. Let’s take some notes and see how this goes. I hope these resources are good.
Resources
- joyofelixir
- Elixir School
- braveclojure
Observations
iex
is the REPL for Elixir- Symbols are called Atoms
- String interpolation is also done via
#{}
- Arrays are called lists, hashes are called maps
- Ugh why do maps need to start with
%
- Functions care about argument arity
- Elixir file extension is
.exs
OK, let’s try and break shit
iex(1)> "lol".length
** (CompileError) iex:1: invalid call "lol".length()
iex(1)> String.length("lol")
3
iex(2)> .14
** (SyntaxError) iex:5: syntax error before: '.'
iex(2)> String.length('lol')
** (FunctionClauseError) no function clause matching in
String.Unicode.length/1
The following arguments were given to String.Unicode.length/1:
# 1
'lol'
Attempted function clauses (showing 1 out of 1):
def length(string) when is_binary(string)
(elixir) lib/elixir/unicode/unicode.ex:270: String.Unicode.length/1
iex(2)> 5 % 2
** (SyntaxError) iex:7: syntax error before: '%'
iex(2)> rem(5,2)
1
iex(3)> yo = %{a: 1, b: 2}
%{a: 1, b: 2}
iex(4)> yo[:a]
1
iex(4)> yo["a"]
nil
iex(4)> yell = fn (phrase) -> String.upcase(phrase) end
#Function<6.99386804/1 in :erl_eval.expr/5>
iex(5)> yell.("who daT?")
"WHO DAT?"