Elixir's syntax is too flexible for my taste. For example, ()
are optional around arguments in function calls. I am happy that mix format
now adds them!
The import
statement defaults to importing all public names in the module, an unsafe default.
To limit the imported names, this ugly syntax is required:
import MyModule, only: [MyFunc: 1]
What I don't like about the syntax above:
MyModule
. It's there because import
is a macro, and only: […]
is the second argument (more about that below). Maybe I'll accept that comma or (get used to it) when I learn to code macros. For a beginner, that comma is just strange.only
. That's because the second argument is actually a keyword list (or whatever it's called, I'm not sure about the name of that now). The full syntax would be {:only, x}
, but there's this syntactic sugar that allows spelling such lists without the braces and comma, when they appear as the trailing arguments in a function or macro call.[MyFunc: 1]
to specify a function with arity 1. Why not MyFunc/1
, the syntax used by the capture operator &
? (I don't like that syntax either, but I'd rather see ugly syntax used consistently than inconsistent, ugly syntax to represent a function with arity).