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