【发布时间】:2011-10-22 06:58:53
【问题描述】:
经过几年的编程,似乎是时候最终攻击SICP了。但是,与其在 Emacs 中编辑和运行所有内容,我宁愿使用不同的编辑器和一个简单的 makefile 来运行所有练习。这似乎并不完全是经典,因为在某些“失败”之前,我找不到任何对像运行文件这样基本的东西的引用。那么我如何在 shell 上运行 Scheme 以便它加载文件,按顺序计算每个表达式,并在遇到计算结果的语句时立即以非零退出代码终止到 #f 或退出代码为零,如果整个文件评估成功? 迄今为止最接近解决方案的事情:
$ cat ch1.scm
...
(= 1 2)
$ scheme --load ch1.scm
...
Loading "ch1.scm"... done
1 ]=>
编辑:换句话说,如果其中的任何表达式评估为#f,是否有某种方法可以在加载 ch1.scm 期间停止评估?
【问题讨论】:
-
你不是在寻找像 RackUnit (docs.racket-lang.org/rackunit/index.html) 这样的单元测试库吗?
-
这将是最后的手段,因为在 Python 和 Bash 等语言中,这将是矫枉过正。
-
基本上你想在 bash 中做什么,可以直接在 Scheme 中完成,对我来说你的方法看起来有点矫枉过正:)
-
怎么样?重要的一点是我希望能够使用任何编辑器,并且一旦其中一个评估返回
#f,就应该停止执行。 -
如果你不想碰我理解的文件,否则使用其他语言将Scheme文件解析为表达式是无意义的,将它们提供给scheme然后检查退出代码是否可以只需导入一个库,在 Scheme 中编写检查即可。快速失败正是我链接的那个库所做的,请看第 3.1 节