On Wed, Feb 12, 2014 at 11:23 AM, Bryan Brady <bryan.brady@gmail.com> wrote:
In the latter definition, Cons a (interleaveStreams bs as), (interleaveStreams bs as) is a thunk. The thunk should only be evaluated when it is needed.  In my original definition, (interleaveStreams as bs) is a thunk. The difference is an extra Cons (e.g., Cons b).  It seems like the additional Cons is causing problems, I just don't understand why. Can anyone point out what I'm missing? 

As Isaac wrote, you want to look at the _left_ hand side, not the right. It's pattern matching that impacts operational semantics.

-- Kim-Ee