Went back to earlier definition of evaluate, as the (wfix extend) definition led to exponential performance penalty in the pascal lists example at least. I'm pretty sure it's that using the Applicative instance preserves sharing, but I'm not quite sure why.