Improving parallel implementations of lazy functional languages using evaluation transformers