SCIP 环境搭建
SCIP 环境搭建
https://zhuanlan.zhihu.com/p/34313034
http://community.schemewiki.org/?SICP-Solutions
一、 环境的配置
1. 背景:
本来我是下载的MIT Scheme的,安装后无法正常打开,在外网Stack Overflow上的解决方法也都尝试,但是内存分配总是出错。我当前的操作系统是64位Window 10。况且,这个软件的更新还停留在2003年,最新支持也只到Windows 7。于是转而寻找替代方案。
2. 替代方案:
DrRacket对于Scheme也有很好的支持,之前叫做DrScheme。搜索下载,安装,一气呵成。(下载地址:https://download.racket-lang.org/ )软件安装好之后,还需要添加@周彦尚大佬提到还需要SICP package。安装步骤在网站上有,下载时记得挂上外网就行。(安装步骤:https://docs.racket-lang.org/sicp-manual/ 中的Installation)中文界面在菜单栏的help里。安装完成后,在定义那一栏加上
”#lang sicp” 即可运行书本上的程序。
3. 详细的安装步骤可以看我的另一篇文章DrRacket 的安装与 SICP 的配置。
二 、源代码
1. 使用源代码一来可以避免一下机械地操作,快速的打理好定义,特别在书本后面的求值器和编译器部分。二来对于课本中的特殊函数也可以马上定位,复制+ctrl F。源代码在书籍官网可以下载(地址:https://mitpress.mit.edu/sicp/ 中的Code from the book)
2. 对于一些需要导入整个文件来说,使用函数load会出错,网友Louis Christopher的博客中提到使用函数Require可解决。使用示例:
(#%require “需要导入的文件”)。(原文链接:https://louischristopher.me/setting-up-drracket-for-sicp )另一个方法是是将预处理器改成#lang racket/load。
三、 视频
1. 视频可以加深对于书本内容的理解,学生的提问也让人很有启发。谢谢@DeathKing(不知道他在知乎是否是这个昵称)大佬的中文化项目:https://github.com/DeathKing/Learning-SICP/ 。视频从《1A: Overview and Introduction to Lisp》开始到《10B: Storage Allocation and Garbage Collection》,从8B开始的内容就去油管看吧。
四 、答案
答案可以用来检验自己对于知识的掌握程度。huangz1990大神做了一个SICP的解题集。(链接:http://sicp.readthedocs.io/en/latest/ )英文版的答案在scheme wiki里有。(SICP-Solution:
http://community.schemewiki.org/?SICP-Solutions )里面的函数点击后可以直达相应的官方文档。
五、 电子书
在书籍官网可以找到(链接:https://mitpress.mit.edu/sicp/full-text/book/book-Z-H-4.html#%_toc_start )。B站用户不稳固的支点提示,还有HTML版本。(链接:https://sarabander.github.io/sicp/html/index.xhtml#SEC_Contents )
六 、Scheme
《Yet Another Scheme Tutorial》是一本Scheme入门教程,由大神Death King翻译了放在网上(链接:http://deathking.github.io/yast-cn/ )
感谢大佬们的默默付出,SICP的学习之路才能畅通无阻。当然,谢谢@萧井陌的《编程入门指南 v1.5》。SICP简直是把编程的过程剖析得细致入微,就像书中引用的约翰尼斯·开普勒所说的一样,“我的目的是想说明,这一天空机器并不是一种天赐造物或者生命体,它不过是钟表一类的机械装置(而那些相信钟表有灵魂的人却将这一工作说成是其创造者的荣耀),在很大程度上,这里多种多样的运动都是由最简单的物质力量产生的,就像钟表里所有活动都是一个发条产生的一样“。
附录:安装命令
https://pkgs.racket-lang.org/package/racket-language-server
raco pkg install racket-language-server
https://pkgs.racket-lang.org/package/files-viewer
raco pkg install files-viewer
https://pkgs.racket-lang.org/package/eopl
raco pkg install sicp
https://pkgs.racket-lang.org/package/eopl
raco pkg install eopl
https://pkgs.racket-lang.org/package/plai
raco pkg install plai
https://pkgs.racket-lang.org/package/plai-doc
raco pkg install plai-doc
M表达式风格的Lisp方言:
https://reference.wolfram.com/language/guide/FunctionalProgramming.html
使用ChezScheme作为后端的依赖类型编程语言
https://www.idris-lang.org/
https://github.com/idris-lang/Idris2
https://github.com/edwinb/Idris2-boot
性能优异的Scheme实现
https://www.scheme.com/
https://github.com/cisco/chezscheme
https://cisco.github.io/ChezScheme/
书籍参考:
The Reasoned Schemer
The Little Prover
The Little Typer
SICP
The Little Schemer
A Little Java, A Few Patterns
The Scheme Programming Language
Essentials of Programming Languages
Programming Languages Application and Interpretation
============ End