10 ms·
Here is a practical everyday example where languages that can represent emptiness in the type system come in handy. He ends up using pointers and mentions: "Us
by nickknw 12y ago
Here is a practical everyday example where languages that can represent emptiness in the type system come in handy.
He ends up using pointers and mentions: "Using pointers also means that clients of the library will need to perform their own nil checks where appropriate to prevent panics."
Looking forward to using Rust :)
- carbocation 12y ago> Using pointers also means that clients of the library will need to perform their own nil checks where appropriate to prevent panics. In practice, as your Rust comment alludes, I find working with nil properties in Go types (used to shuffle between the DB and JSON) to be quite painful. I end up keeping track of a lot more state than I really want to, and errors can be introduced subtly. In Go, you can usually use a type's zero value without doing anything special. But if that type contains any nil properties, you can't presume this anymore. If I have: type Thing struct { ID int Bad *string } I then have to do nil checks in every method that might handle Thing, or I have to make it accessible only via functions which perform those checks for me in advance. Either way, much less convenient.