6.4 Feature Constraints

This section contains procedures dedicated to feature constraints.

^

{Record.'^' R +LI X}

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

Is supported by the infix operator ^, that is

{Record.'^' R LI X}

can also be written as

R^LI=X

IsRecordC

{IsRecordC *X ?B}

tests whether X has kind record.

TellRecord

{TellRecord +L ?R}

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

WidthC

{WidthC *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

{Record.reflectArity *R ?LIs}

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

monitorArity

{Record.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.


Denys Duchier, Leif Kornstaedt and Christian Schulte
Version 1.0.1 (19990218)