The pragma declarations described below are a standard part of the Mercury language, as are the pragmas for controlling the foreign language interface (see Foreign language interface) and impurity (see Impurity). As an extension, implementations may also choose to support additional pragmas with implementation-dependent semantics (see Implementation-dependent extensions).
|• Inlining:||Pragmas can be used to suggest or prevent procedure inlining.|
|• Type specialization:||Pragmas can be used to produce specialized versions of polymorphic procedures.|
|• Obsolescence:||Library developers can declare old versions of predicates or functions to be obsolete.|
|• No determinism warnings:||Pragmas can be used to suppress warnings about too loose determinism declarations.|
|• No dead predicate warnings:||Pragmas can be used to suppress warnings about unused predicates.|
|• Source file name:||The ‘source_file’ pragma and ‘#line’ directives provide support for preprocessors and other tools that generate Mercury code.|