fix one lazy evaluation bug in recursion