Speaking of which, do any of my programming language friends know of a type system that captures "how it's used" as opposed to "what values it's allowed to have" in the way that Sajaniemi's variable roles do? Borrow checking in Rust is kind of somewhat adjacent, but not really the same thing - any others?
@gvwilson Rust has `const` as a language-level construct to represent fixed values, and also has a std library type for one-way flag.