From 0890e81e3d625d5c8d79a154b19ee2e8c44a0d3f Mon Sep 17 00:00:00 2001 From: Danny Yoo Date: Fri, 1 Jul 2011 13:04:46 -0400 Subject: [PATCH] added in another sk test --- lang/kernel.rkt | 6 ++--- tests/more-tests/run-more-tests.rkt | 1 + tests/more-tests/sk-generator-2.expected | 6 +++++ tests/more-tests/sk-generator-2.rkt | 32 ++++++++++++++++++++++++ 4 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 tests/more-tests/sk-generator-2.expected create mode 100644 tests/more-tests/sk-generator-2.rkt diff --git a/lang/kernel.rkt b/lang/kernel.rkt index 6e8c8ef..c645f91 100644 --- a/lang/kernel.rkt +++ b/lang/kernel.rkt @@ -312,10 +312,10 @@ ;; foldr ;; sort ;; build-list -;; box + box ;; box-immutable -;; unbox -;; set-box! + unbox + set-box! ;; make-hash ;; make-hasheq ;; hash-set! diff --git a/tests/more-tests/run-more-tests.rkt b/tests/more-tests/run-more-tests.rkt index e347551..b99e60c 100644 --- a/tests/more-tests/run-more-tests.rkt +++ b/tests/more-tests/run-more-tests.rkt @@ -8,4 +8,5 @@ (test "hello.rkt") (test "sk-generator.rkt") +(test "sk-generator-2.rkt") #;(test "simple-structs.rkt") \ No newline at end of file diff --git a/tests/more-tests/sk-generator-2.expected b/tests/more-tests/sk-generator-2.expected new file mode 100644 index 0000000..237b83b --- /dev/null +++ b/tests/more-tests/sk-generator-2.expected @@ -0,0 +1,6 @@ +"a" +"b" +"c" +1 +2 +3 diff --git a/tests/more-tests/sk-generator-2.rkt b/tests/more-tests/sk-generator-2.rkt new file mode 100644 index 0000000..c440962 --- /dev/null +++ b/tests/more-tests/sk-generator-2.rkt @@ -0,0 +1,32 @@ +#lang planet dyoo/whalesong +(define (make-gen gen) + (let ([cont (box #f)]) + (lambda () + (call/cc (lambda (caller) + (if (unbox cont) + ((unbox cont) caller) + (gen (lambda (v) + (call/cc (lambda (gen-k) + (begin + (set-box! cont gen-k) + (caller v)))))))))))) + +(define g1 (make-gen (lambda (return) + (begin + (return "a") + (return "b") + (return "c"))))) + +(define g2 (make-gen (lambda (ret) + (begin + (ret 1) + (ret 2) + (ret 3))))) + +(g1) +(g1) +(g1) + +(g2) +(g2) +(g2) \ No newline at end of file