(define-module (runewidth graphemes stream) #:use-module (srfi srfi-41) #:use-module (srfi srfi-9 gnu) #:export (make-grapheme input->grapheme-stream)) (define-immutable-record-type (make-grapheme glyphs width sentence-end? word-end?) grapheme? (glyphs grapheme-glyphs) (width grapheme-width) (sentence-end? grapheme-sentence-end?) (word-end? grapheme-word-end?)) (define-stream (input->grapheme-stream port) (unless port (set! port (current-input-port))) (define gr (make-grapheme glyphs width sentence-end? word-end?)) (stream-cons c (input->grapheme-stream port)))