In the following program, (sync (regexp-match-evt #rx"^..." in)) returns 
'(#"123") but (file-position in) returns 0 instead of 3:


#lang racket/base
(require racket/port)
(define-values (in out) (make-pipe))
(display "12345" out)
(sync (regexp-match-evt #rx"^..." in)) 
(file-position in)



That means there's a problem with regexp-match-evt, right? It means 
regexp-match-evt is not updating the input port's position following a 
successful match. 


If you append (read-char in) (file-position in) to this program, read-char will 
return #\4 and file-position will return 1. 


Anyway, regexp-match-evt introduces this problem when used with input ports 
returned by make-pipe, tcp-connect and tcp-accept, but it works fine with the 
input port returned by open-input-string. I looked at the definition of 
regexp-match-evt in collects/mzlib/ports.rkt but I can't identify the problem. 
(I'm using Racket v5.1.1 on Windows)
                                          
_________________________________________________
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/users

Reply via email to