Lisp and Erlang Atoms, Ruby and Scheme Symbols. How useful are they?

Atoms are literals, constants with their own name for value. What you see is what you get and don’t expect more. The atom cat means “cat” and that’s it. You can’t play with it, you can’t change it, you can’t smash it to pieces; it’s cat. Deal with it.

I compared atoms to constants having their name as their values. You may have worked with code that used constants before: as an example, let’s say I have values for eye colors: BLUE -> 1, BROWN -> 2, GREEN -> 3, OTHER -> 4. You need to match the name of the constant to some underlying value. Atoms let you forget about the underlying values: my eye colors can simply be ‘blue’, ‘brown’, ‘green’ and ‘other’. These colors can be used anywhere in any piece of code: the underlying values will never clash and it is impossible for such a constant to be undefined!

taken from http://learnyousomeerlang.com/starting-out-for-real#atoms

With this being said, atoms end up being a better semantic fit to describing data in your code in places other languages would be forced to use either strings, enums or defines. They’re safer and friendlier to use for similar intended results.

Leave a Comment