用 C 写了一个 Racket 解释器,一个很小的功能子集

2019-09-15 22:29:26 +08:00
 haozhang

常用的 form 都实现了,递归,闭包什么的,链接如下 https://github.com/Summerlve/Little-Racket

5336 次点击
所在节点    C
31 条回复
guxingke
2019-09-16 21:33:02 +08:00
@haozhang mal 有个 mal 语言的实现. 可以说是自举(self-hosted) .
guxingke
2019-09-16 21:34:31 +08:00
@haozhang racket 是个 lisp 方言.
mal 项目也是啊.
haozhang
2019-09-16 22:52:00 +08:00
@guxingke 多好玩呢....我说着 c 实现 racket,你给我来一套 mal 语言他娘自举....
haozhang
2019-09-16 22:52:40 +08:00
@guxingke 你来套 racket 自举么好了,来个 mal 自举什么玩意....
haozhang
2019-09-16 22:54:50 +08:00
为啥老是有人回复点莫名其妙的东西的,说着用勺子吃西瓜,他非得来个有人种了片南瓜你去瞧瞧,西瓜南瓜都是瓜....
shangh
2019-09-17 10:20:08 +08:00
shangh
2019-09-17 10:20:22 +08:00
厉害~
no1xsyzy
2019-09-17 19:22:07 +08:00
@haozhang 小学语文:语义重复是语法错误
不过也有 “一颗是枣树,另一颗也是枣树” 这种

就像是你觉得没有 ./ “还得脑子拐道弯才意识到这不是标准库头文件”
但也有人看到 ./ “还得脑子拐道弯才意识到这不是标准库头文件”
我则是虽然一看就知道它不是标准库头文件,但还是会强迫症地想一遍 “这个东西是多余的” 并且再把 #include 语法从脑子里掏出来验证一遍,非常分散注意力。
另外,我不清楚 #include <./somelib> 是什么行为…… 小心导致不一致
haozhang
2019-09-18 07:25:58 +08:00
@no1xsyzy 所以我哪里写了...<./xxx>了,你找出来我改
no1xsyzy
2019-09-18 08:59:22 +08:00
@haozhang 我是说如果你哪天碰到一个别人写的 <./xxx>,结果你就当作是用户自定义库了,而实际上是找标准库的话会造成你读别人代码的混乱。
另外,根据 C 语言标准, #include "" 和 #include <> 如何寻找都是实现者来决定的:典型地,VC 的标准库和 gcc 的标准库在根本不同的,也不具有可兼容地进行指示的位置。所以说有可能导致某些编译器根本不认 "./xxx",它根本不在本地目录找文件 "xxx" 而是在本地目录找文件 ".%2Fxxx" —— 结果找不到。
haozhang
2019-09-18 09:39:57 +08:00
@no1xsyzy 你说的对

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

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

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

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

© 2021 V2EX