Only evaluates let blocks once using memoization

Fix #2