Você não pode selecionar mais de 25 tópicos
Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
|
- ;; regular arguments
-
- (define (make-counter)
- (let ((var 0))
- (lambda ()
- (set! var (+ 1 var))
- var)))
-
- (define counter1 (make-counter))
-
- (assert (= (counter1) 1))
-
- (define counter2 (make-counter))
-
- (assert (= (counter2) 1))
-
- (assert (= (counter2) 2))
- (assert (= (counter1) 2))
- (assert (= (counter1) 3))
- (assert (= (counter2) 3))
- (assert (= (counter2) 4))
- (assert (= (counter2) 5))
- (assert (= (counter1) 4))
- (assert (= (counter1) 5))
-
- (define (g)
- (define x 0)
- (lambda ()
- (define temp x)
- (mutate! x (+ x 1))
- temp))
-
- ;; key arguments
-
- (define (make-key-counter)
- ((lambda (:var)
- (lambda ()
- (mutate! var (+ 1 var))
- var))
- :var 0))
-
-
- (define key-counter1 (make-key-counter))
-
- (assert (= (key-counter1) 1))
-
- (define key-counter2 (make-key-counter))
-
- (assert (= (key-counter2) 1))
-
- (assert (= (key-counter2) 2))
- (assert (= (key-counter1) 2))
- (assert (= (key-counter1) 3))
- (assert (= (key-counter2) 3))
- (assert (= (key-counter2) 4))
- (assert (= (key-counter2) 5))
- (assert (= (key-counter1) 4))
- (assert (= (key-counter1) 5))
-
- ;; rest arguments will no be copied so we don't need to test them here
|