Lambda interperter 实现疑问

PerfectPan?? 2022-11-28 19:01:35

slides 中提到我们可以用 beta-reduction 一直对 lambda 式子进行化简,但目前的 interpreter 应该不会针对 Fn(_, body) 的场景下的 body 内部继续进行 substitution,是不是这个 eval 只是针对一次 App 的结果求值,如果要完成最终的化简要怎么做呢,或者说基于此 interpreter 继续完善 Fn(_, body) 是不是就行。

...全文
150 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
2329JFD 2023-01-04
  • 打赏
  • 举报
回复

已看过博主的文章,很不错的内容,干货满满,期望师傅能输出更多干货,并强烈为师傅分享自己的知识点赞

另外,如果可以的话,期待师傅能给正在参加年度博客之星评选的我一个五星好评,您的五星好评都是对我的支持与鼓励:https://bbs.csdn.net/topics/611387568

点赞五星好评回馈小福利:抽奖赠书 | 总价值200元,书由君自行挑选(从此页面参与抽奖的同学,只需五星好评后,参与抽奖)

yhgu2000 2022-12-02
  • 打赏
  • 举报
回复

省事的话可以这样:对于Fn(_, body),在body上递归调用eval,然后将返回结果包在新的Fn里返回。
但是这种方法可能会导致程序提前陷入死循环,所以完善的做法是使用另外一个专门的函数bind,只对body进行变量绑定,不进一步求值。
可以看我们之前的讨论:https://bbs.csdn.net/topics/609352619%E3%80%82

2329JFD 2023-01-04
  • 举报
回复
@yhgu2000 已看过博主的文章,很不错的内容,干货满满,期望师傅能输出更多干货,并强烈为师傅分享自己的知识点赞 另外,如果可以的话,期待师傅能给正在参加年度博客之星评选的我一个五星好评,您的五星好评都是对我的支持与鼓励:https://bbs.csdn.net/topics/611387568 点赞五星好评回馈小福利:抽奖赠书 | 总价值200元,书由君自行挑选(从此页面参与抽奖的同学,只需五星好评后,参与抽奖)
採石 2022-11-30
  • 打赏
  • 举报
回复

内部要继续eval,
Fn(_, eval(body)),
不然开发好的解释器运行ppt中例子会跟纸上推演不一致。
可以用ppt的示例来做测试用例。跑通符合预期,说明开发好的解释器比较健壮。

230

社区成员

发帖
与我相关
我的任务
社区描述
日程:https://bbs.csdn.net/topics/608593392 主页:https://bobzhang.github.io/courses/ B站: “张宏波的基础软件课程”
rescript开发语言 个人社区 广东省·深圳市
社区管理员
  • raelidea
  • MoonBit月兔
  • 幻灰龙
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧