diff --git a/os2.rkt b/os2.rkt index 4e3d3b1..b295e75 100644 --- a/os2.rkt +++ b/os2.rkt @@ -3,6 +3,7 @@ (require racket/set) (require racket/match) +(require (only-in racket/list flatten)) (require "unify.rkt") ;; Endpoints are the units of deduplication. @@ -53,7 +54,8 @@ ;; MessageHandler = TrapK (struct handlers (presence absence message) #:transparent) -;; actions is a plain old List, not a QuasiQueue. +;; actions is a plain old ordered ConsTreeOf, not a +;; QuasiQueue. (struct transition (state actions) #:transparent) ;; Preactions. @@ -260,7 +262,7 @@ (define (enqueue-actions state pid actions) (struct-copy vm state - [pending-actions (quasi-enqueue-many (for/list ([a actions]) (cons pid a)) + [pending-actions (quasi-enqueue-many (for/list ([a (flatten actions)]) (cons pid a)) (vm-pending-actions state))])) (define (wrap-trapk pid trapk)