>>66The practical gain is that computation is deferred to when it's strictly needed and that the logic to achieve this behavior is trivial to write and that you can get powerful results from a tiny amount of logic. Yes, this level of abstraction makes it opaque to try and reason its logic for the sake of performance. I take opinion that the higher level abstract logic makes it easier for the compiler to apply higher levels of optimization to the abstract code. I think this is the difference between using a declarative language like Haskell where the compiler is supposed to be powerful and all knowing and using an imperative language like C where programmers are supposed to instruct the compiler because the compiler doesn't understand the programmer's high level intent.