diff --git a/chp3/6.rst b/chp3/6.rst index baa7af0..7e94908 100644 --- a/chp3/6.rst +++ b/chp3/6.rst @@ -1,8 +1,6 @@ 练习 3.6 ========== -.. warning:: 本解法有错误,正等待修复中,具体请参考: http://sicp.readthedocs.org/en/latest/chp3/6.html#comment-770974238 - 这题使用了 3.1.1 和 3.1.2 小节的状态、消息传递和随机数等知识: .. literalinclude:: code/6-rand.scm diff --git a/chp3/code/6-rand.scm b/chp3/code/6-rand.scm index be6c9a1..4e1dfb7 100644 --- a/chp3/code/6-rand.scm +++ b/chp3/code/6-rand.scm @@ -6,7 +6,8 @@ (let ((state random-init)) (lambda (mode) (cond ((eq? mode 'generate) ; 产生随机数 - (random state)) + (begin (set! state (rand-update state)) + state)) ((eq? mode 'reset) ; 返回一个过程 (lambda (new-value) ; 这个过程将 state 修改为新值 new-value (set! state new-value)