1) Do you also think of e.g. Scala as the CoffeeScript of Java? Scala : Java :: Elixir : Erlang
2) Yes, interoperability is there and, just like you can use Scala libraries from Java, you just need the Elixir runtime in your path.
3) My favorite is from the String.Unicode module:
defmodule String.Unicode do
# ...
def upcase(""), do: ""
lc { codepoint, upper, _lower, _title } inlist codes, upper && upper != codepoint do
def upcase(unquote(codepoint) <> rest) do
unquote(upper) <> upcase(rest)
end
end
def upcase(<< char, rest :: binary >>) do
<< char >> <> upcase(rest)
end
# ...
end