25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 
 
 
 
 

55 satır
983 B

  1. (define (make-counter) (let ((var 0)) (lambda () (set! var (+ 1 var)))))
  2. (define counter1 (make-counter))
  3. (assert (= (counter1) 1))
  4. (define counter2 (make-counter))
  5. (assert (= (counter2) 1))
  6. (assert (= (counter2) 2))
  7. (assert (= (counter1) 2))
  8. (assert (= (counter1) 3))
  9. (assert (= (counter2) 3))
  10. (assert (= (counter2) 4))
  11. (assert (= (counter2) 5))
  12. (assert (= (counter1) 4))
  13. (assert (= (counter1) 5))
  14. (define (g) (define x 0) (lambda () (define temp x) (mutate x (+ x 1)) temp))
  15. (define (make-key-counter) ((lambda (:keys var) (lambda () (mutate var (+ 1 var)) var)) :var 0))
  16. (define key-counter1 (make-key-counter))
  17. (assert (= (key-counter1) 1))
  18. (define key-counter2 (make-key-counter))
  19. (assert (= (key-counter2) 1))
  20. (assert (= (key-counter2) 2))
  21. (assert (= (key-counter1) 2))
  22. (assert (= (key-counter1) 3))
  23. (assert (= (key-counter2) 3))
  24. (assert (= (key-counter2) 4))
  25. (assert (= (key-counter2) 5))
  26. (assert (= (key-counter1) 4))
  27. (assert (= (key-counter1) 5))