fix bug in recursive let