3 ms·
Isn't the bogus code trivially caught by linear type languages like Austral? Maybe we need to move past urBEAM and into futureBEAM
by trh0awayman 4y ago
Isn't the bogus code trivially caught by linear type languages like Austral? Maybe we need to move past urBEAM and into futureBEAM
- nextaccountic 4y agoYes. Also by the typestate pattern: have open and closed files have different types, and write be implemented only for open files
- javcasas 4y agoNothing short of linear types prevent you from saving the open file descriptor to a variable, closing the file, then using the open file descriptor variable again.
- nextaccountic 4y agoThat's true! It's not an "also", you use both linear/affine types plus the typestate pattern For the curious, it works like this in Rust http://cliffle.com/blog/rust-typestate/ http://cliffle.com/blog/rust-typestate/ https://willcrichton.net/rust-api-type-patterns/typestate.html https://willcrichton.net/rust-api-type-patterns/typestate.ht... Or rather, typestate itself needs either linear/affine types or a similar mechanism to make sure that when you are in the "closed" state you can't access methods from the "open" state, and vice-versa. (now, there are languages that implement typestate as a language feature rather than a design pattern, but I don't know how they work)