人生中写的第一个 Scheme 方言

2015-10-05 15:11:53 +08:00
 lcj2class
https://github.com/jiacai2050/JCScheme
2940 次点击
所在节点    分享创造
11 条回复
htfy96
2015-10-05 16:10:44 +08:00
S 表达式支持完全吗?
lcj2class
2015-10-05 17:23:49 +08:00
@htfy96
scheme 中的 cons 、 car 、 cdr 、 list 都支持了。
htfy96
2015-10-05 20:32:37 +08:00
lcj2class
2015-10-05 23:29:03 +08:00
@htfy96
我感觉把这几个 quote 实现了,基本上就把 macro 给掌握了。
想想也不难,就是在 eval S-表达式时对这些 quote 符号进行特殊处理即可。
实现 eval 函数本身更直接了,直接对后面 S-表达式两次求值即可。
ethego
2015-10-06 10:34:26 +08:00
我想知道匿名函数在解释器内部的实现机理,楼主对这个有什么心得或者理解吗?
ethego
2015-10-06 10:35:20 +08:00
我想知道匿名函数在解释器内部的实现原理,楼主对这方面有了解吗…?
lcj2class
2015-10-06 11:48:21 +08:00
@ethego
匿名函数没什么特别的呀。有名字的函数,其实是匿名函数的语法糖衣,本质上还是匿名的。
JScheme 匿名函数也支持,你感兴趣可以看看。
不过匿名函数无法直接实现递归,需要借助 Y 算子。
codecrash
2015-10-07 16:15:35 +08:00
@lcj2class Y 算子是什么
yxcxx
2015-10-08 22:16:38 +08:00
lcj2class
2015-10-09 09:47:41 +08:00
@yxcxx
@codecrash
大刘这的这个文章,个人觉得啰嗦了,觉得看起来比较吃力,当然,大刘是吧他思考的过程写出来了,可以参考。

FYI ,我目前觉得理解 Y 算子 最好的文章应该是这个
http://shellfly.org/blog/2015/01/07/yi-the-y-combinator-slight-return/
yxcxx
2015-10-09 21:11:25 +08:00
@lcj2class
谢谢推荐

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/225723

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX