25개 이상의 토픽을 선택하실 수 없습니다.
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
- ;; regular arguments
-
- (define (make-counter)
- (let ((var 0))
- (lambda ()
- (mutate 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 (:keys 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
|