The allowed declarations are:
:- type :- solver type :- pred :- func :- inst :- mode :- typeclass :- instance :- pragma :- promise :- initialise :- finalise :- mutable :- module :- interface :- implementation :- import_module :- use_module :- include_module :- end_module
The ‘type’, ‘solver type’, ‘pred’, ‘func’, ‘typeclass’ and ‘instance’ declarations are used for the type system, the ‘inst’ and ‘mode’ declarations are for the mode system, the ‘pragma’ declarations are for the foreign language interface, and for compiler hints about inlining, and the remainder are for the module system. They are described in more detail in their respective chapters.