Struct definitions, patterns, and constructors are already defined such that the syntax isnāt ambiguous. The problem with function arguments is that function arguments are expressions, and expressions can already be of the form a : b.
Having function arguments suddenly not be expressions, but some new production that is an expression except where it isnāt would be a weird corner case, and Yet Another Thing that would have to be explained.
I mean, Iād love named arguments with the name: value syntax, but if it comes down to that versus a simpler, more consistent grammar, Iād rather the simpler, more consistent grammar.
name = value is problematic for similar reasons: it already means something else. Context-dependent rules suck, for the most part. Heck, people already have issues with the mustachioed insect operator (::<).
On the other hand, if you use a different syntax, there would then be three ābind name to valueā syntaxes. If you change the type ascription syntax, you now have two āspecify typeā syntaxes.
This is probably a no-win situation for some part of the languageā¦