Controlling Speculative Computation in a Parallel Functional Programming Language