JFLP: Volume 1997, Article 5
The Journal of Functional and Logic Programming
Volume 1997
Article 5
Published by The MIT Press . Copyright 1997 Massachusetts Institute of Technology.
Your institution may already be a subscriber to JFLP. If not, please subscribe for legitimate access to all journal articles.
Mourad Debbabi, Zahia Aïdoud, and Ali Faour
30 June 1997
Abstract
We address the type and effect inference in higher-order concurrent functional programming languages á la Concurrent ML. We present three extensions of the type and effect discipline. First, the discipline is extended to deal with infinite but recursive effects. Second, the inferred effects are structured, i.e., we keep track of the structure of effects (sequencing, choice, parallel composition, and recursion) instead of using an AC1I (associative, commutative, unitary, and idempotent) effect cumulation operator. Third, for the sake of flexibility, a subtyping relation is considered on the type and effect algebras. This is much more powerful than the classical subeffecting technique. This is meant to avoid type mismatches that may arise in some typing contexts between subexpressions that have similar type structure but different effect annotations. We present the language syntax together with its static semantics. The latter consists of the typing rules and an inference algorithm that is proved to be sound with respect to the typing rules.The following versions of the article are available:
-
Preformatted versions of the article (compressed with
gzip
)- DVI (gzip'ped 41 kb)
- PostScript (gzip'ped 93 kb)
-
LaTeX
(
JFLP-A97-05.tex
, gzip'ped 22 kb) -
BIBTeX
(
JFLP-A97-05.bib
, gzip'ped 2 kb) - Parameter settings for custom formatting ( cjropts.tex , 117 bytes)
Self citation
@article{jflp97-05, author={Mourad Debbabi and Zahia A\"{\i}doud and Ali Faour}, title={On the Inference of Structured Recursive Effects with Subtyping}, journal={Journal of Functional and Logic Programming}, volume={1997}, number={5}, publisher={The MIT Press}, month={June}, year={1997} }