Exercise 4.31 - fine-grained control over lazy/lazy with memoization. 'upward-compatible' - or is it 'backwards'?