They’re hardcoded. The operators fall into three classes:
-
The vast majority of them are from the
Stdlibmodule, so I don’t expect those to change very regularly. -
A small number of “conventional” operators used in the community (
>>=,let*, etc.). Even for that small set there is some divergence in Opam – c.f.>>|vs>|=for a map operator – so I suspect there are not many other candidates for this group. -
There are a few regexes behind the scenes for catching valid operator names that don’t fall into the first two categories. e.g. many search terms are classified as “a left-associative operator” with a correspondingly vague description.