In this problem, you must change the concrete syntax for function abstraction as follows. First, the "fn" and "=>" keywords are replaced with "lambda" and a "." (period), respectively. Second, the parentheses around the list of formal parameters are dropped. In other words,
"fn (x,y) => <exp>" becomes "lambda x,y . <exp>". So, for example:
"(lambda u,v . lambda f . 3 x +(x,y))" should return:

[ "Clo",
  [ "f" ],
  [ "IntExp", 3 ],
  [ "Env",
    [ [ "u", [ "Num", 1 ] ], [ "v", [ "Num", 3 ] ] ],
    [ "Env",
      [ [ "x", [ "Num", 1 ] ], [ "y", [ "Num", 2 ] ], [ "z", [ "Num", 3 ] ] ],
      [ "EmptyEnv" ] ] ] ]

and "lambda . 3" should return

[ "Clo",
  [ ],
  [ "IntExp", 3 ],
  [ "Env",
    [ [ "x", [ "Num", 1 ] ], [ "y", [ "Num", 2 ] ], [ "z", [ "Num", 3 ] ] ],
    [ "EmptyEnv" ] ] ]

For your answer, check each and every file below that MUST be altered to implement this modification.





[ $('#absyn').prop('checked'), $('#grammar').prop('checked'), $('#env').prop('checked'), $('#interpreter').prop('checked') ]
return RP23part1Validate(guess);

Does this change impact the concrete syntax or the abstract syntax of SLang 1 (or both)?

Are we adding new types of denoted values or modifying the existing ones?

Are we adding new types of expressions?