If a strong monad M is used to define the denotational semantics of a functional language with computations, a product operation ×: M X × M Y -> M (X × Y) is needed to define the semantics of pairing. Every strong monad is equipped with two standard products, which correspond to left-to-right and right-to-left evaluation. We study the algebraic properties of these standard products in general. Then we define alternative products with similar properties for strict and parallel evaluation in the special case of strong monads in DCPO which are obtained as free constructions w.r.t. various theories of non-deterministic computation, including both classical and probabilistic theories.
[Paper.ps.gz (13p, 52k, reformatted)]
Reinhold Heckmann /