Re:Programming Idioms
by pharmakom on Monday August 16, 2021 @08:27AM
(#28197242)
Why did they add this when we can already do:
C# should have fewer, better considered features imo.
[ Parent
| on HN ]
Re:Programming Idioms
by still_grokking on Monday August 16, 2021 @08:51AM
(#28197421)
Maybe because people are still naming their identifiers "x" and such, and "new Foo()" could be some arbitrary expression?
Or maybe just because C# is a TIMTOWTDI language?
C# looks indeed quite baroque to me. But as I'm not doing any C# I don't know whether this is a good or a bad thing in practice.
OTOHS I guess less complexity in a language is generally to be preferred compared to having more flexibility doing the same thing.
I think it can be useful for initialising properties and fields, where you are not allowed to use `var` (for good reason, if you ask me). But of all the recent features it's the one that I would miss least if it were taken away.
Fair point! Although I wish they had found a way to add F# style global inference rather all these little tricks
I suspect type inference becomes pretty tricky in the presence of subtyping.
I don't have any F# experience, but I have done some Haskell back in the days and I found the type inference very convenient. But I also think there is something to be said for limiting type inference to "inside" methods where it is effectively invisible to users of a class. Rust has made the same choice: you have type inference inside functions, but never outside.