Blame


1 665c255d 2023-08-04 jrmu (define x 10)
2 665c255d 2023-08-04 jrmu (define s (make-serializer))
3 665c255d 2023-08-04 jrmu (parallel-execute (s (lambda () (set! x (* x x))))
4 665c255d 2023-08-04 jrmu (s (lambda () (set! x (+ x 1)))))
5 665c255d 2023-08-04 jrmu
6 665c255d 2023-08-04 jrmu (define (make-account balance)
7 665c255d 2023-08-04 jrmu (define (withdraw amount)
8 665c255d 2023-08-04 jrmu (if (>= balance amount)
9 665c255d 2023-08-04 jrmu (begin (set! balance (- balance amount))
10 665c255d 2023-08-04 jrmu balance)
11 665c255d 2023-08-04 jrmu "Insufficient funds"))
12 665c255d 2023-08-04 jrmu (define (deposit amount)
13 665c255d 2023-08-04 jrmu (set! balance (+ balance amount))
14 665c255d 2023-08-04 jrmu balance)
15 665c255d 2023-08-04 jrmu (let ((protected (make-serializer)))
16 665c255d 2023-08-04 jrmu (define (dispatch m)
17 665c255d 2023-08-04 jrmu (cond ((eq? m 'withdraw) (protected withdraw))
18 665c255d 2023-08-04 jrmu ((eq? m 'deposit) (protected deposit))
19 665c255d 2023-08-04 jrmu (else (error "Unknown request -- MAKE-ACCOUT" m))))
20 665c255d 2023-08-04 jrmu dispatch))