在关于 Currency 的 SICP 3.4 节(方案中的序列化器)中,有一个称为并行执行的过程,该过程在 MIT 方案中进行了描述但未实现。我想知道是否有人真正实施过它;如果不是,如何开始实施这一程序?
http://mitpress.mit.edu/sicp/full-text/book/book-ZH-23.html#%_sec_3.4.1
在关于 Currency 的 SICP 3.4 节(方案中的序列化器)中,有一个称为并行执行的过程,该过程在 MIT 方案中进行了描述但未实现。我想知道是否有人真正实施过它;如果不是,如何开始实施这一程序?
http://mitpress.mit.edu/sicp/full-text/book/book-ZH-23.html#%_sec_3.4.1
这就是我parallel-execute
使用 Racket 解决 SICP 3.4 节中练习的方法:
(define (parallel-execute . procs)
(map thread-wait
(map (lambda (proc) (thread proc))
procs)))
我不能保证它parallel-execute
与书中定义的过程具有相同的语义,但它允许我解决练习。
本书的官方网站提供了一个工具parallel.scm。像这样打开 MIT 方案:
mit-scheme -load PATH/parallel.scm
或者把这个
(load "PATH/parallel.scm")
在您的方案源文件的头部。
实际上,您可以使用以下软件包在球拍中加载所有必要的实现。只需在定义或交互窗口中键入它,必要的包就会被安装,当你需要它时,在定义窗口中包含相同的注释:
(需要(行星dyoo/sicp-concurrency:1:2/sicp-concurrency))
在 GNU Guile 中,该过程被实现为parallel
. 它在那里被定义为一种特殊形式,可从(use-modules (ice-9 threads))
. 如果你想自己实现它,你可以看看这个模块的源代码。