parameters: (bindings, env)
return_statement: return env.make_child_frame(formals, vals)
docstring: Create a frame containing bindings from a let expression.
docstring_summary: Create a frame containing bindings from a let expression.
docstring_tokens: Create a frame containing bindings from a let expression .
function: def make_let_frame(bindings, env):
      """Create a frame containing bindings from a let expression."""
      if not scheme_listp(bindings):
          raise SchemeError("bad bindings list in let form")
      # 保存中间变量  (let ((x 2))--> bindings.first
      # 检查是否符合，构建formals vals
      formals, vals = nil, nil
      import pdb
      pdb.set_trace()
      while bindings is not nil:
          car = bindings.first
          check_form(car, 2, 2)
          bindings = bindings.second
          formals = Pair(car.first, formals)
          vals = Pair(scheme_eval(car.second.first, env), vals)
      check_formals(formals)
      return env.make_child_frame(formals, vals)
function_tokens: def make_let_frame ( bindings , env ) : if not scheme_listp ( bindings ) : raise SchemeError ( "bad bindings list in let form" ) # 保存中间变量  (let ((x 2))--> bindings.first # 检查是否符合，构建formals vals formals , vals = nil , nil import pdb pdb . set_trace ( ) while bindings is not nil : car = bindings . first check_form ( car , 2 , 2 ) bindings = bindings . second formals = Pair ( car . first , formals ) vals = Pair ( scheme_eval ( car . second . first , env ) , vals ) check_formals ( formals ) return env . make_child_frame ( formals , vals )