[ Comparing and Sorting | The ECLiPSe Built-In Predicates | Reference Manual | Alphabetic Index ]

# domain_index(+Value, -Domain, -Index)

Value is defined in Domain with positional number Index

Value
  Atomic term
Domain
  Variable or structure of the form Module:DomainName
Index
  Variable or integer starting from 1

## Description

Used to look up which domain a particular value belongs to, and which numerical index it has within this domain. Only domain definitions which are visible in the caller module are taken into account.

Domain is returned as a pair DefinitionModule:DomainName which unabiguously identifies the domain definition that contains the value. Index is unified with a natural number corresponding to the position of Value within that domain definition (starting from 1).

### Modes and Determinism

- domain_index(+, -, -) is semidet

### Modules

This predicate is sensitive to its module context (tool predicate, see @/2).

### Fail Conditions

The value does not occur in any of the visible domain definitions

### Exceptions

(4) instantiation fault
  Value is not instantiated
(5) type error
  Value is not atomic

## Examples

        :- local domain(colour(red,green,blue)).

        :- export domain(vowel(a,e,i,o,u)).

        :- local domain(abc(a,b,c)).
        Domain value a not unique in module eclipse
        out of range in local domain(abc(a, b, c))
        Abort

        ?- domain_index(green, Domain, Index).
        Domain = eclipse : colour
        Index = 2
        Yes (0.00s cpu)

        ?- domain_index(a, Domain, Index).
        Domain = eclipse : vowel
        Index = 1
        Yes (0.00s cpu)

        ?- domain_index(b, Domain, Index).
        No (0.00s cpu)

        ?- domain_index(yellow, Domain, Index).
        No (0.00s cpu)

## See Also

domain / 1, current_domain / 3