All pastes #935305 Raw Edit

Miscellany

public text v1 · immutable
·published 2008-03-09 15:28 UTC
rendered paste body
  (define (do-message type data)
      (let ((tag (next-tag)))
        (call/cc (lambda (return)
          (set! tag-cc (append tag-cc (list (cons tag return))))
          (9p:send-message outport (make-9p:message type tag data))
          (let* ((a (9p:receive-message inport))
                 (rtag (9p:message-tag a))
                 (ret (alist-ref rtag tag-cc)))
            (if ret
              (begin
                (set! tag-cc (alist-remove rtag tag-cc))
                (ret a))
              #f))))))