纪念一下我的第一个 scheme 解释器

2019-01-16 19:26:31 +08:00
 xrlin

GoScheme

Github: https://github.com/xrlin/goscheme

从看 SICP 起就想写一个解释器,然而现在 SICP 都没看完。。。。看第四章后就有点迷糊了,似懂非懂,所以马上实践一下,程序使用 Golang 编写,相比书中的实现方式可能不太优雅,scheme 这语言真的可以开拓思维。

安装

go get github.com/xrlin/goscheme/cmd/goscheme

如果不想自己编译可以在这里下载最新版本的可执行文件。

使用

# 执行 goscheme 命令 /你自己下载的可执行文件进入 REPL 终端模式
goscheme

# 命令后可以指定执行某个 scheme 文件
goscheme test.scm

简单的例子

项目里的example.scm包含了一些简单的 scheme 程序。

支持的特性

因为当时还没想好代码结构,是一边写一边重构的,测试不太充分,如果发现 bug 可以给我提个 issue,如果有好的实践还望不吝赐教。

4164 次点击
所在节点    Go 编程语言
16 条回复
sulinehk
2019-01-16 19:49:09 +08:00
好东西啊
sulinehk
2019-01-16 19:51:26 +08:00
博客的 post 打不开了
xrlin
2019-01-16 19:56:17 +08:00
@sulinehk #2 博客可以访问啊,难道遇到浏览器兼容问题
rrfeng
2019-01-16 20:29:55 +08:00
厉害
但是那个交互提示光标(输入行)上下闪好难受
Wincer
2019-01-16 20:37:05 +08:00
厉害👍,我 sicp 看了两章,第三章就看不下去了😟
sulinehk
2019-01-16 23:31:13 +08:00
@xrlin 又可以用了 可能是我信号不太好吧
jdhao
2019-01-17 00:19:26 +08:00
赞~
qinfensky
2019-01-17 00:27:46 +08:00
强悍啊
zwh2698
2019-01-17 06:35:34 +08:00
Lz 暴露年龄了吧,mit 似乎已经改成 python 了,这个世界还有多少学习这个
catsoul
2019-01-17 08:33:33 +08:00
@zwh2698 可能只是买了旧版的书,而且其实内容差不多,lz 也是用 GOLANG 实现的,所以无所谓啦~
mozartgho
2019-01-17 08:39:15 +08:00
MIT 现在已经不用了 SICP 了,最新教材是《如何设计程序》使用 Racket 语言。新教材网上有免费版在线版本:
https://htdp.org/2018-01-06/Book/index.html
azuki
2019-01-17 08:45:14 +08:00
@zwh2698

python 版的是 cmu 的。

我记得之前看到消息说 mit 不教 sicp 了。
pythonee
2019-01-17 09:12:44 +08:00
这么强悍啊,赞一个楼主
no1xsyzy
2019-01-17 11:09:35 +08:00
@zwh2698 SICP 就只是个路过的神作,并不仅限于写代码,而是上升到哲学层面了。
一说 Lisp 之所以受到如此高的评价(最好的语言是什么? Lisp 一出话题其实就结束了)很大程度上是因为 SICP 将 Lisp 提升到另一境界的缘故。
单就 “编程” 这件事来说,Python 就是个弟弟。
xrlin
2019-01-17 12:43:14 +08:00
@zwh2698 #9 python 版本也看过一点,当时好像还没有整理好的 python 版本,只是一个课程的教案,后来没继续跟着网络课程学,虽然不同语言的差别确实挺大,比如在类型方面,scheme 需要使用 tagged-list,python、go 之类的则可以直接将基础类型聚合作为新的类型,但是此外的思路大致都是一样的。
eshezhao
2019-01-17 16:49:16 +08:00
厉害 群主找工作吗

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

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

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

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

© 2021 V2EX