两个球拍模块相撞
Two racket modules colliding
我的文件需要两个模块:
(require sicp) ; contains set-car! and set-cdr!
(require (planet dyoo/sicp-concurrency:1:2/sicp-concurrency)) ; contains procedures parallel-execute and test-and-set!
问题:两个库都使用不同风格的方案。 sicp-concurrency 使用 mzscheme。要求这个模块阻止我在 cond 子句中使用 else。
有没有办法在 sicp-concurrency 中阻止 mzscheme 的功能,同时仍然使用我需要的过程?
我已将 Danny Yoo 的代码更新为 Racket 7。
在此处获取新文件 "sicp-concurrency.rkt":
https://gist.github.com/soegaard/d32e12d89705c774b71ee78ef930a4bf
将文件保存在与程序文件相同的文件夹中。
这是一个使用示例:
#lang sicp
(#%require "sicp-concurrency.rkt")
(define (test-1)
(define x 10)
(parallel-execute (lambda () (set! x (* x x)))
(lambda () (set! x (+ x 1))))
x)
(define (test-2)
(define x 10)
(define s (make-serializer))
(parallel-execute (s (lambda () (set! x (* x x))))
(s (lambda () (set! x (+ x 1)))))
x)
(test-1)
(test-1)
(test-1)
(test-1)
(test-1)
我的文件需要两个模块:
(require sicp) ; contains set-car! and set-cdr!
(require (planet dyoo/sicp-concurrency:1:2/sicp-concurrency)) ; contains procedures parallel-execute and test-and-set!
问题:两个库都使用不同风格的方案。 sicp-concurrency 使用 mzscheme。要求这个模块阻止我在 cond 子句中使用 else。
有没有办法在 sicp-concurrency 中阻止 mzscheme 的功能,同时仍然使用我需要的过程?
我已将 Danny Yoo 的代码更新为 Racket 7。 在此处获取新文件 "sicp-concurrency.rkt":
https://gist.github.com/soegaard/d32e12d89705c774b71ee78ef930a4bf
将文件保存在与程序文件相同的文件夹中。 这是一个使用示例:
#lang sicp
(#%require "sicp-concurrency.rkt")
(define (test-1)
(define x 10)
(parallel-execute (lambda () (set! x (* x x)))
(lambda () (set! x (+ x 1))))
x)
(define (test-2)
(define x 10)
(define s (make-serializer))
(parallel-execute (s (lambda () (set! x (* x x))))
(s (lambda () (set! x (+ x 1)))))
x)
(test-1)
(test-1)
(test-1)
(test-1)
(test-1)