Streams:  Major Magic

It's easy to get distracted by the magic here. There are three big
ideas though:

1. Efficiency -- decouple the order of evaluation from the form of
the program. Evaluate something when you NEED TO USE IT.

2. The possibility of representing (potentially) infinite data

3. A return to functional representation of data (as opposed to
   OOP and "state".)