I’ve done some Erlang a long time ago and now I’m returning to the platform via Elixir. One the few things syntax-wise that I feel is sub-optimal is how you call Erlang functions, i.e., :module.function(...). It just looks a bit odd to me, although I do understand why it is this way.
Wouldn’t it be cool if we could use the same transformation done in keyword lists ([{:foo => 1}] being the same as [foo: 1]) and call module:function(...) instead, just like in Erlang?
Keyword lists are lists of tuples, so it’s [{:foo, 1}], [foo: 1] == [{:foo, 1}]. A bit confusing yeah, so my vote is leave it be and add no sugar, it’s not healthy
The point is that the current syntax is in par with the whole rest of the language, as Foo.bar() is the same as :'Elixir.Foo'.bar() (with exception for the aliases). So adding new call syntax would mean that Foo:bar() also would became valid call. While this could simplify some things (it would provide difference between function call and map access) I think it would be too confusing, especially as foo. bar() is valid syntax and foo: bar() will not be.