hakobe (owner)

Revisions

gist: 67412 Download_button fork
public
Public Clone URL: git://gist.github.com/67412.git
Embed All Files: show embed
generator.scm #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
(define (list-generator lst)
  (let ((l lst) (val '()) (return '()))
    (letrec (
      (continue (lambda (x)
        (call/cc (lambda (lap-to-go)
          (if (not (null? l))
            ((set! continue lap-to-go)
            (set! val (car l))
            (set! l (cdr l))
            (return val)))))
        (return '()))))
      (lambda ()
        (call/cc (lambda (where-to-go)
          (set! return where-to-go)
          (continue 'start)))))))
 
(define g (list-generator '(0 1 2 3 4)))
(print (g)) # 0
(print (g)) # 1
(print (g)) # 2
(print (g)) # 3
(print (g)) # 4