Next: Variable scoping, Previous: DCG-goals, Up: Syntax [Contents]

Syntactically, a data-term is just a term.

There are a couple of differences from Prolog. The first one is that double-quoted strings are atomic in Mercury, they are not abbreviations for lists of character codes. The second is that Mercury provides several extensions to Prolog’s term syntax: Mercury terms may contain record field selection and field update expressions, conditional (if-then-else) expressions, function applications, higher-order function applications, lambda expressions, and explicit type qualifications.

A data-term is either a variable, a data-functor, or a special data-term. A special data-term is a conditional expression, a record syntax expression, a lambda expression, a higher-order function application, or an explicit type qualification.

• Data-functors: | ||

• Record syntax: | ||

• Unification expressions: | ||

• Conditional expressions: | ||

• Lambda expressions: | ||

• Higher-order function applications: | ||

• Explicit type qualification: |