I don't think Erlang's syntax is at all inconsistent; it's just different.<p>Once you understand what periods, semicolons, and commas are actually doing, there is no confusion. In the same way an English writer doesn't get confused about when to use periods, Erlang's periods become invisible before long.<p>That's not to say they are awesome. They cause some issues with refactoring. Moving a bit of code might involve also changing its ending punctuation. This is also true in JavaScript, Python, and Ruby in list/map syntax. You just run into it more with Erlang since there is more of it.<p>Pattern matching is also one of my favorite things about Erlang, especially the binary syntax.<p>One example I particular like is the binary digest to hex representation[1]:<p><pre><code> hexstring(<<X:128/big-unsigned-integer>>) ->
lists:flatten(io_lib:format("~32.16.0b", [X])).
</code></pre>
[1] <a href="http://www.enchantedage.com/hex-format-hash-for-md5-sha1-sha256-and-sha512" rel="nofollow">http://www.enchantedage.com/hex-format-hash-for-md5-sha1-sha...</a>