At Wed, 27 Jun 2012 17:34:27 -0400, Neil Van Dyke wrote: > If I have a struct that wraps an input-port, and I want the struct to be > usable as an event that returns the struct as the sync result... is > there an better way than the code below?
You can use a procedure that receives "self" as the `prop:evt' value. ------------------------------ #lang racket/base (struct my-struct (my-wrapped-evt) #:property prop:evt (lambda (self) (wrap-evt (my-struct-my-wrapped-evt self) (lambda (ignored) self)))) (define (my-struct-read s) (read-byte (my-struct-my-wrapped-evt s))) ;; Test: (define s (my-struct (current-input-port))) (printf "s = ~S\n" s) (let loop () (write-string "Syncing...\n") (let ((my-evt-result (sync s))) (printf "Reading from ~S...\n" my-evt-result) (let ((v (my-struct-read s))) (printf "Read ~S\n" v) (loop)))) ____________________ Racket Users list: http://lists.racket-lang.org/users