Skip to content

Instantly share code, notes, and snippets.

@cryks
Created May 13, 2012 04:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cryks/2681399 to your computer and use it in GitHub Desktop.
Save cryks/2681399 to your computer and use it in GitHub Desktop.
Generator を返す glob
(define (gglob2 patterns . opts)
(define (cont)
(let/cc outer-cont
(apply glob-fold patterns
(lambda (curr _)
(let/cc inner-cont
(set! cont inner-cont)
(outer-cont curr)))
'() opts)
(set! cont (lambda () (eof-object)))
(eof-object)))
(lambda () (cont)))
(use gauche.generator)
(define (gglob patterns . opts)
(generate
(lambda (yield)
(apply glob-fold patterns
(lambda (curr _) (yield curr))
'() opts))))
(use gauche.partcont)
(define (gglob patterns . opts)
(define (cont)
(reset
(apply glob-fold patterns
(lambda (curr _)
(shift k (set! cont k) curr))
'() opts)
(set! cont (lambda () (eof-object)))
(eof-object)))
(lambda () (cont)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment