|
Abstract : |
Abstract. We describe a type system and typed semantics that use a hierarchy of monads to describe and delimit a variety of e ects, including non-termination, exceptions, and state, in a call-by-value functional language. The type system and semantics can be used to organize and justify avariety of optimizing transformations in the presence of e ects. In addition, we describe a simple monad inferencing algorithm that computes the minimum e ect for each subexpression of a program, and provides more accurate e ects information than local syntactic methods. 1, |