yamasushi(2013/04/10 10:10:47 UTC)globを抽象的にあつかうことができるのではないかと思い、いろいろ試してみます。
(define-module komono-glob
(use gauche.generator)
(use gauche.lazy)
(use util.stream)
(export
glob-lseq
glob-generator
glob-stream
glob-for-each
) )
(select-module komono-glob)
(define (glob-for-each pat proc . rest)
(apply glob-fold pat (^ (x s) (proc x) s) 0 rest)
(values) )
(define (glob-stream pat . rest)
(iterator->stream
(^[yield end]
(apply glob-for-each pat yield rest) (end) ) ) )
(define (glob-generator pat . rest)
(generate
(^y (apply glob-for-each pat y rest) ) ) )
(define (glob-lseq pat . rest)
($ generator->lseq $ apply glob-generator pat rest))
Tags: util.stream, gauche.generator, gauche.lazy