As others have said, there is a difference in Erlang between `Foo` and `foo`; the first is a binding the latter is an atom.<p>Many languages encode information in capitalization. Go uses it for functions which are exported. In OCaml and Haskell, constructor names always begins with a Capital letter (to distinguish them from values). The alternatives are usually not that alluring: either you need some symbol like a backtick, or a keyword in front or behind the value. So capitalization it is.<p>The particular Erlang-case stems from Prolog as already said. And as you note, Unicode provides its own headaches with respect to these rules.