We have presented here two different solutions for the control problem in dynamic evaluation. In fact this control problem appears in a more general context: the use of parallelism from computer algebra systems.
We have seen how A
is able to incorporate tools such as
continuations and fork. This mechanism is very powerful, and while
foreign function interfaces are becoming relatively common in other
languages, the compiler allows a much greater degree of control over
the definition and use of the imported functions.
The problem of redundant computation has been avoided in these implementations of dynamic evaluation, and the use of continuations is a very elegant mechanism for solving this form of control problem. Naturally, more work is needed in both the C and Scheme versions to ensure that they retain this elegance, and execute without excessive overhead. As stated before, the original code was only lightly modified, but one can imagine some changes to make it better adapted to the continuations model.
The dynamic evaluation code itself can be further improved -- the gcd algorithm used as the basis of the equality test is a generic implementation, and could be made more specific to the data structures used in dynamic evaluation.