iex> [109, 97, 103, 105, 99] 'magic'
In Elixir, there is a data type known as a charlist that can be confusing for beginners. Charlists are a list of codepoints (ASCII integer values), that can be rendered as a readable string.
iex> <<109, 97, 103, 105, 99>> "magic"
Bitstrings are also a sequence of codepoints, but packed together as a contiguous sequence of bits.
Which magic should I prefer?
If you’re writing Elixir, you almost always want the bitstring version when dealing with strings, since they are more memory efficient. If you’re using the
String module, you’re dealing with bitstrings under the hood. As an Elixir developer, it is rare that you will need a charlist, and it will typically be due to interfacing with Erlang code.
Revealing the magic
As a poor magician, I will reveal my trick
iex> inspect("magic", binaries: :as_binary) "<<109, 97, 103, 105, 99>>"