[Larceny-users] Bug In string input/output ports???
Ray Racine
ray.racine at comcast.net
Sat Dec 29 15:38:52 EST 2007
I think there is a bug in string ports, here is a test case.
(library
(test)
(export
parse-string)
(import
(rnrs base)
(only (rnrs io simple)
display newline
eof-object? peek-char read-char write-char)
(only (rnrs unicode)
char-ci>=? char-ci<=? char-downcase)
(only (rnrs io ports)
open-string-input-port)
(primitives open-output-string get-output-string))
(define read-valid
(lambda (ip valid? op)
(let loop ((ch (peek-char ip)) (cnt 0))
(assert (char? ch))
(display "read-valid Char: ") (display ch)(newline)
(if (eof-object? ch)
cnt
(if (valid? ch)
(begin
(write-char (read-char ip) op)
(loop (peek-char ip) (+ cnt 1)))
cnt)))))
(define parse-string
(lambda (s)
(let ((isp (open-string-input-port s))
(osp (open-output-string)))
(read-valid isp (lambda (ch)
(char-ci<=? ch #\f))
osp)
(get-output-string osp))))
)
Larceny v0.96 "Fluoridation" (Dec 23 2007 12:44:05,
precise:Linux:unified)
larceny.heap, built on Sun Dec 23 12:44:43 EST 2007
ERR5RS mode (no libraries have been imported)
> (import (test))
Autoloading (test)
Autoloading (rnrs unicode)
Autoloading (rnrs io ports)
Autoloading (larceny deprecated)
> (parse-string "abcdefghijklmnopqrstuvwxyz")
read-valid Char: a
read-valid Char: c
read-valid Char: e
read-valid Char: g
"bdf"
More information about the Larceny-users
mailing list