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
.