finish 7.24, support multiple arg and letrec