如何在SICP中输入练习代码?

时间:2016-07-18 12:02:32

标签: scheme sicp mit-scheme

我一直在使用print eval循环,但是我应该使用其他东西吗?

5 个答案:

答案 0 :(得分:1)

使用 Emacs,并在其中使用 Geiser 来访问 REPL 并帮助编辑方案文件。它还可以处理各种 Scheme REPL,例如 Chez SchemeRacketMIT SchemeGuileChickenGambit 和 {{3} } 毫不费力。

答案 1 :(得分:0)

REPL就是这样做的地方,是的。

大多数人在命令行中使用REPL之上的内容,例如emacs。我使用xscheme emacs库。在我看来,替代方案并不是很好,只使用命令行是不可容忍的。

答案 2 :(得分:0)

使用DrRacket。在此处下载:http://download.racket-lang.org/

答案 3 :(得分:0)

您可以使用GNU Guile Scheme编写脚本来实现SICP中的练习。大多数内置程序都没有问题,语法没有区别。

在Linux中,

在脚本文件的开头使用shebang表示法编写脚本

  

#!/ usr /..& lt; guile interpreter的地址> \
  -e<应首先运行的程序的名称> -s
  !#

示例

#!/usr/local/bin/guile \
-e main -s
!#
(define main (args)
(display (+ 3 4))
(newline))

使用chmod + <filename>使文件可执行并运行它./& lt; filename&gt;

P.S。 Scheme文件使用.scm文件扩展名保存。

答案 4 :(得分:0)

如果你正在使用Racket,只需使用DrRacket。

如果您正在使用MIT Scheme,您可能希望使用Edwin,这是与Mit Scheme捆绑在一起的Emacs的衍生产品,最初是为SICP而构建的。 Edwin是一个emacs衍生品,所以如果你已经了解Emacs,那么你将与Edwin相处得很好。如果您不了解emacs,基本知识是:

  • C-f,C-b,C-n和C-p分别为向前,向后,向上和向下。
  • C-Space开始选择区域(突出显示要操作的文本)。该地区将留在那里,直到你用C-Space摆脱它,或用它做点什么。
  • C-w切割区域
  • C-k从光标向前剪切线
  • C-y粘贴
  • C-x C-e在scratch / repl缓冲区(默认窗口)中直接执行光标后面的代码行
  • C-c C-c停止执行您使用C-x C-e
  • 运行的内容
  • C-x C-c退出

这应该足以开始使用Edwin。能够只编辑函数的定义,重新评估您编辑的定义,让新版本在动态环境中开始工作,真是太棒了。