Implementation of Speculative Parallelism in Functional Languages

A compile-time analysis technique is developed to derive the probability with which a user-defined function or a supercombinator requires each one of its arguments. This provides a basis for identifying useful speculative parallelism in a program. The performance of speculative evaluation is compared with that of lazy evaluation, and the necessary conditions under which speculative evaluation performs better are identified. >