解绑变量函数

时间:2015-09-07 03:58:40

标签: scheme

我想定义一个取消绑定变量最接近绑定的unbind-var函数。

例如

({let {[x 2]}
  {let {[x 3]}
     {let {[z 3]}
      {+ x {unbind-var x {+ x z}}}}}})

将返回3 + 2 + 3 = 8(它使用unbind-var形式中x的第一个值)。 可以有任意的嵌套。

似乎唯一的策略是从unbind-var x返回,直到我们找到x的第二个let。即不知何故,我必须将整个表达式转换为一个列表,然后用car / first和cdr / rest选择片段?

0 个答案:

没有答案