8 Feature Constraints: RecordC

This chapter explains procedures dedicated to feature constraints.

is

{RecordC.is *X ?B}

tests whether X has kind record.

tell

{RecordC.tell +L ?R}

tells the constraint store that R is a record with label L.

tellSize

{RecordC.tellSize +L +I ?R}

tells the constraint store that R is a record with label L.

Signals the implementation that it is likely that I features are told to R. RecordC.tellSize is semantically equivalent to RecordC.tell, but the current implementation optimizes memory allocation.

^

{RecordC.'^' R +LI X}

tells the constraint store that R is a FC having field X at feature LI.

Is supported by the infix operator ^, that is

{RecordC.'^' R LI X}

can also be written as

R^LI=X

width

{RecordC.width *R ?D}

posts a propagator for the constraint that D is the width of R. Also tells the constraint store that D is a finite domain integer.

reflectArity

{RecordC.reflectArity *R ?LIs}

returns a list LIs containing the currently known features of R.

monitorArity

{RecordC.monitorArity *R ?P ?LIs}

returns a nullary procedure P and a stream LIs containing the currently known features of R.

Features appear in the stream as soon as they become known to the constraint store. Application of P closes the stream and deletes the propagator. The stream is automatically closed once the constraint store determines R.

hasLabel

{RecordC.hasLabel *R ?B}

blocks until R becomes a feature structure. Tests whether R has been told a label with RecordC.tell.


Denys Duchier, Leif Kornstaedt, Martin Homik, Tobias Müller, Christian Schulte and Peter Van Roy
Version 1.4.0 (20080702)