Coming from other languages, I find that
example("with", 3, extra: "arguments", as: "a", keyword: "list")
being equivalent to example("with", 3, [extra: "arguments", as: "a", keyword: "list"])
and example "with", 3, extra: "arguments", as: "a", keyword: "list"
always takes some extra mental effort to get through, especially when there's no parenthesis. But I appreciate not having to write all the extra brackets and parens when I get going, so I think it's a fair tradeoff.Personally, I like the flexibility, but yes there are a lot of rules to keep in mind.
example("with", 3, [{:extra, "arguments"}, {:as, "a"}, {:keyword, "list"}])
iex> [{:extra, "arguments"}, {:as, "a"}, {:keyword, "list"}] = [extra: "arguments", as: "a", keyword: "list"]
[extra: "arguments", as: "a", keyword: "list"]