[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