FUF also implements a third notion of type in unification: procedural types correspond to user-defined data-structures that are unified by special-purpose unification methods. The unification method describes how elements of the type fit in a partial order structure. Typed features are explicitly described (extensionally) partial orders. With procedural types, the partial order is intensionally described by a Lisp procedure.
Procedural types therefore allow the grammar to integrate complex objects that could hardly be described by standard FDs alone. Examples of procedural types are pattern (with the pattern unification method enforcing ordering constraints), cset (with the cset unification method checking for set equality) and tpattern defined in gr7.l in the example directory which implements the semantics of tense selection.
There are limitations to the use of procedural types:
The following is a trivial (read: useless) example of how procedural types
can be used. The syntax of define-procedural-type is described in
Section
.
|