Uma lista de caracteres nada mais é do que uma lista de caracteres. Considere o seguinte programa para entender o mesmo.
IO.puts('Hello')
IO.puts(is_list('Hello'))
O programa acima gera o seguinte resultado -
Hello
true
Em vez de conter bytes, uma lista de caracteres contém os pontos de código dos caracteres entre aspas simples. So while the double-quotes represent a string (i.e. a binary), singlequotes represent a char list (i.e. a list). Observe que o IEx irá gerar apenas pontos de código como saída se algum dos caracteres estiver fora do intervalo ASCII.
Listas de caracteres são usadas principalmente na interface com Erlang, em particular bibliotecas antigas que não aceitam binários como argumentos. Você pode converter uma lista de caracteres em uma string e vice-versa usando as funções to_string (char_list) e to_char_list (string) -
IO.puts(is_list(to_char_list("hełło")))
IO.puts(is_binary(to_string ('hełło')))
O programa acima gera o seguinte resultado -
true
true
NOTE - As funções to_string e to_char_list são polimórficos, ou seja, eles podem pegar vários tipos de entrada como átomos, inteiros e convertê-los em strings e listas de caracteres, respectivamente.