Where is the option type defined?


I’m almost positive that it was in Pervasives–but it’s not there now. In which module is the type 'a option actually defined?



It’s in initial typing environment, along with other builtin types like int, bool, etc.
This file contains all the types that the typechecker needs to know.

The reason the typechecker needs to know about option specifically (and not, for example, ref) is because of the syntax let f ?foo = <body>. In <body>, foo has type _ option. Additionally, ?(foo=2) desugars to pattern matching, so the typechecker must know about option, Some and None.