Lenient languages, such as Id90, have been touted as among the best functional languages for massively parallel machines AHN88]. Lenient evaluation combines non-strict semantics with eager evaluation Tra91]. Non-strictness gives these languages more expressive power than strict semantics, while eager evaluation ensures the highest degree of parallelism. Unfortunately, non-strictness incurs a large overhead, as it requires dynamic scheduling and synchronization. As a result, many powerful program analysis techniques have been developed to statically determine when non-strictness is not required CPJ85, Tra91, Sch94]. This paper studies a large set of lenient programs and quanti es the degree of non-strictness they require. We identify several forms of non-strictness, including functional, conditional, and data structure non-strictness. Surprisingly, most Id90 programs require neither functional nor conditional non-strictness. Many benchmark programs, however, make use of a limited form ...
Klaus E. Schauser, Seth Copen Goldstein