4 ms·
Go and Scala also allow every pointer to be null, no? Scala has an option type, but so does Java 8. Defining one in C# is easy. But there is Ceylon, Kotlin, Cl
by sievebrain 11y ago
Go and Scala also allow every pointer to be null, no? Scala has an option type, but so does Java 8. Defining one in C# is easy.
But there is Ceylon, Kotlin, Clojure, whatever. Kotlin uses ? suffixes to define if something is optional. And at least the code interops nicely. You can inherit a huge Java codebase and slowly convert the code over. No such luck with Go. Unless you're converting into C!
- cballard 11y agoC# and Java optionals aren't very useful, since they would be reference types themselves, and thus could be null! I would submit Rust and Swift as "decent" type systems, if Haskell is the standard for "good". They do nullability correctly, but lack HKTs.
- jdmichal 11y agoC# has non-nullable value types via the `struct` keyword. And C# in fact already has a defined optional type to handle this; it's called `Nullable`. [0] [0] https://msdn.microsoft.com/en-us/library/b3h38hb0%28v=vs.110%29.aspx https://msdn.microsoft.com/en-us/library/b3h38hb0%28v=vs.110...
- krotton 11y agoIn Scala, Option[Whatever] may also be null. The difference is that it's considered "some Java compatibility leftover" and never exploited by any sane piece of code.