This code combines several tricks having to do with lazy evaluation. We can define a type that requires a lazy function to ask for each bit of its input argument one at a time, in whatever order decided by the function&#x27;s implementation. Furthermore, we can partially evaluate any number of lazy function invocations in parallel without finishing any of them that we don&#x27;t need.<p>As a result, laziness reveals information about a function&#x27;s implementation in a way that strict evaluation does not. It matters which parts of the input a function actually reads.<p>Similarly, in non-lazy languages, functions that take callbacks reveal information about themselves by calling the callback (or not). We can write tests demonstrating the order in which a function calls its callback.