 PRIVATE>
 
 M: channel to ( value channel -- )
-    dup channel-receivers
+    dup receivers>>
     dup empty? [ drop dup wait to ] [ nip (to) ] if ;
 
 M: channel from ( channel -- value )
     [
-        notify channel-senders
+        notify senders>>
         dup empty? [ drop ] [ (from) ] if
     ] curry "channel receive" suspend ;

!
! Channels - based on ideas from newsqueak
USING: kernel sequences sequences.lib threads continuations
random math ;
IN: channels

TUPLE: channel receivers senders ;

<PRIVATE

: wait ( channel -- )
    [ senders>> push ] curry
    "channel send" suspend drop ;

: (to) ( value receivers -- )
    delete-random resume-with yield ;

: notify ( continuation channel -- channel )
    [ receivers>> push ] keep ;

: (from) ( senders -- )
    delete-random resume ;
