7

在关于 Currency 的 SICP 3.4 节(方案中的序列化器)中,有一个称为并行执行的过程,该过程在 MIT 方案中进行了描述但未实现。我想知道是否有人真正实施过它;如果不是,如何开始实施这一程序?

http://mitpress.mit.edu/sicp/full-text/book/book-ZH-23.html#%_sec_3.4.1

4

4 回答 4

7

这就是我parallel-execute使用 Racket 解决 SICP 3.4 节中练习的方法:

(define (parallel-execute . procs)
  (map thread-wait
       (map (lambda (proc) (thread proc))
            procs)))

我不能保证它parallel-execute与书中定义的过程具有相同的语义,但它允许我解决练习。

于 2012-11-20T13:47:06.263 回答
6

本书的官方网站提供了一个工具parallel.scm。像这样打开 MIT 方案:

mit-scheme -load PATH/parallel.scm

或者把这个

(load "PATH/parallel.scm")

在您的方案源文件的头部。

于 2014-11-06T07:38:47.717 回答
3

实际上,您可以使用以下软件包在球拍中加载所有必要的实现。只需在定义或交互窗口中键入它,必要的包就会被安装,当你需要它时,在定义窗口中包含相同的注释:

(需要(行星dyoo/sicp-concurrency:1:2/sicp-concurrency))

于 2016-05-29T17:21:49.513 回答
2

在 GNU Guile 中,该过程被实现为parallel. 它在那里被定义为一种特殊形式,可从(use-modules (ice-9 threads)). 如果你想自己实现它,你可以看看这个模块的源代码。

于 2012-11-20T19:54:36.900 回答