(Clearly, the compiler did not watch enough movies with serious villains.)
In other words, we have to look beyond the mere syntactic appearance of a type, and into its deeper, semantic meaning.
As part of my work on formalizing Rust, I will eventually want to prove the soundness of types like `Vec` or `RefCell` and their associated operations.
In order to do so, I will first have to figure out what exactly the semantics of these types are. (This will be fairly easy for `Vec`, but really hard for `RefCell`. Can you guess why?)
Then I will have to check *every* function operating on these types and prove that they are actually well-typed.
(Clearly, the compiler did not watch enough movies with serious villains.)
In other words, we have to look beyond the mere syntactic appearance of a type, and into its deeper, semantic meaning.
As part of my work on formalizing Rust, I will eventually want to prove the soundness of types like `Vec` or `RefCell` and their associated operations.
In order to do so, I will first have to figure out what exactly the semantics of these types are. (This will be fairly easy for `Vec`, but really hard for `RefCell`. Can you guess why?)
Then I will have to check *every* function operating on these types and prove that they are actually well-typed.