Elixir binary_to_atom e binary_to_existing_atom

Tal como o Ruby possui symbols, Elixir possui atoms e tal como em Ruby é possível converter strings em symbols, no Elixir também é possível através da função binary_to_atom/2 ou binary_to_existing_atom/2 que recebe dois argumentos, a string e o atom :utf8. Eu quis melhorar isto e submeti uma pull-request

Atoms são strings cujo valor é o próprio conteúdo, ou seja, o atom :aberto possui o conteúdo aberto. Isto não parece muito útil a primeira vista, mas o que ocorre é que os atoms são referencias, de modo que vocês pode ter milhares de processos utilizando o atom :aberto sem ocupar todo o espaço que ocupariam se fossem strings. Vejam que se tivermos milhares de processos utilizando a string “aberto”, cada processo estaria alocando vários bytes.

As funções binary_to_atom/2 e binary_to_existing_atom/2 são responsáveis por converter uma string em um atom, e no caso eu queria digitar menos. Considerei que o :utf8 que sempre era passado era desnecessário e então enviei uma pull-request que adiciona duas macros que aceitam apenas um parâmetro.

Alguns exemplos de como era chamado antes:

binary_to_atom "my_atom", :utf8            #=> :my_atom
:my_atom                                   #=> :my_atom
binary_to_existing_atom "my_atom", :utf8   #=> :my_atom

E depois que o merge foi feito:

binary_to_atom "my_atom"          #=> :my_atom
:my_atom                          #=> :my_atom
binary_to_existing_atom "my_atom" #=> :my_atom

Aprender uma nova linguagem de programação, e ainda por cima poder contribuir para sua evolução, mesmo que esteja ainda tão instável em termos de maturidade, mas isso faz parte. Entender as fraquezas e as partes fortes faz parte, estudar seu código, participar das discussões acompanhar a evolução de uma linguagem tão promissora é, no mínimo, divertido.

comments powered by Disqus