9 Deep-guard Concurrent Constraint Combinators: Combinator

This chapter describes deep-guard concurrent constraint combinators such as conditional and disjunction. Most combinators implemented by the module Combinator are available by convenient syntax and are described in Chapter 12 of ``Tutorial of Oz''.

'not'

{Combinator.'not' +P}

implements deep-negation where the nullary procedure P gives the statement to negate.

Is supported by special syntax. The statement

not S end

expands to

{Combinator.'not' proc {$S end}

'reify'

{Combinator.'reify' +P $D}

implements deep-reification where the nullary procedure P gives the statement to reify.

'cond'

{Combinator.'cond' +T +P}

implements parallel concurrent conditional.

'or'

{Combinator.'or' +T}

implements disjunction. T is a tuple of either nullary or unary procedures. The special syntax statement

      or S1 
      [] 
S2 
      [] 
S3 then S4 
      end 
      

corresponds to the following

    local 
       proc {C1
S1 end 
       proc {C2
S2 end 
       fun {C3
S3 proc {$S4 end end 
    in 
       {Combinator.'or' C1#C2#C3}
    end 
   

'choice'

{Combinator.'choice' +T}

implements choice point construction.

'dis'

{Combinator.'dis' +T}

implements andorra-style disjunction.


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