5 ms·
Note that you can have linear types (which is what gives you what you're talking about) in managed languages. You can have them as an extension in Haskell for e
by navaati 6y ago
Note that you can have linear types (which is what gives you what you're talking about) in managed languages. You can have them as an extension in Haskell for exemple.
Rust is the only mainstream-ish language to really use them, though.
- ragnese 6y agoRust uses a mixture of affine and ... "regular"? types. My understanding is that affine is a looser version of linear because the type doesn't have to be consumed. You can have dtors in non-affine types (types that implement the Copy trait) in Rust as well. I'm really only talking about C++ style destructors. Those don't require linear or affine types. But, I agree, that in a managed language, having a linear type is one way to get predictable destructors to run. Strangely, Swift has deinit{} for its class types (ref-counted), but not for its struct types (value types).
- steveklabnik 6y agoYou cannot implement Drop for a Copy type.
- ragnese 6y agoFair enough! I never wanted to implement Drop on a Copy type, but I assumed you could.