Abstract
Strictness optimizations in the implementation of lazy functional languages are not always valid. In nonoptimized graph reduction, evaluation always takes place at the request of case analysis or a primitive operation. Hence, the result of a reduction is always a data value and never a function. This implies that in an implementation no argument satisfaction check is required. But in the presence of strict arguments, “premature” reduction may take place outside the scope of a case or primitive operation. This causes problems in graph reducers that use an aggressive take. Two solutions are presented, one based on a run-time argument satisfaction check, the other on a weakened strictness analyzer. Experimental results are used to compare the two solutions and show that the cost of the aggressive take can be arbitrarily high for specific programs. The experimental results enable a trade-off to be made by the reduction machine designer. © 1994, ACM. All rights reserved.
Author supplied keywords
Cite
CITATION STYLE
Beemster, M. (1994). Strictness Optimization for Graph Reduction Machines (Why id Might Not Be Strict). ACM Transactions on Programming Languages and Systems (TOPLAS), 16(5), 1449–1466. https://doi.org/10.1145/186025.186040
Register to see more suggestions
Mendeley helps you to discover research relevant for your work.