See TheLittleSchemer.