4 ms·
<T> has issues with ambiguous parsing as < and > are also the less than and greater than operators. Rust recently had an small issue with this: https://github.
by platinumrad 8y ago
<T> has issues with ambiguous parsing as < and > are also the less than and greater than operators. Rust recently had an small issue with this:
https://github.com/rust-lang/rust/pull/53562 https://github.com/rust-lang/rust/pull/53562
- edflsafoiewq 8y ago[T] has precedents (Eiffel comes to mind).
- kbd 8y agoI'm always so happy to see Eiffel mentioned. I read Object Oriented Software Construction immediately before I read the book on (then recently-released) Java 1.2, and it made it so clear how much Java got wrong :(
- ianlancetaylor 8y agoUnfortunately [T] is also ambiguous with the current Go syntax. The parser can't distinguish an array declaration from a generic type.
- alecthomas 8y agoHow about the following: contract Addable(t T) { t + t } func Sum.<T Addable>(x []T) T { var total T for _, v := range x { total += v } return total } It has the nice property that it's somewhat analogous to type conversions, the grammar should be unambiguous, and it's much less visually confusing than re-using parentheses IMO.