Hacker News new | ask | show | jobs
by trh0awayman 1294 days ago
Isn't the bogus code trivially caught by linear type languages like Austral? Maybe we need to move past urBEAM and into futureBEAM
1 comments

Yes. Also by the typestate pattern: have open and closed files have different types, and write be implemented only for open files
Nothing 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.
That'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/ 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)