June 2018 Update
This commit is contained in:
parent
ba8067c3b7
commit
22f33d4004
5278 changed files with 84726 additions and 14379 deletions
|
|
@ -0,0 +1,30 @@
|
|||
\
|
||||
\ co.fs Coroutines by continuations.
|
||||
\
|
||||
\ * Circular Queue. Capacity is power of 2.
|
||||
\
|
||||
VARIABLE HEAD VARIABLE TAIL
|
||||
128 CELLS CONSTANT CQ#
|
||||
\ * align by queue capacity
|
||||
HERE DUP
|
||||
CQ# 1- INVERT AND CQ# +
|
||||
SWAP - ALLOT
|
||||
\
|
||||
HERE CQ# ALLOT CONSTANT START
|
||||
\
|
||||
: ADJUST ( -- ) [ CQ# 1- ]L AND START + ;
|
||||
: PUT ( n-- ) TAIL @ TUCK ! CELL+ ADJUST TAIL ! ;
|
||||
: TAKE ( --n ) HEAD @ DUP @ SWAP CELL+ ADJUST HEAD ! ;
|
||||
: 0CQ ( -- ) START DUP HEAD ! TAIL ! ; 0CQ
|
||||
: NOEMPTY? ( --f ) HEAD @ TAIL @ <> ;
|
||||
: ;CO ( -- ) TAKE >R ;
|
||||
\
|
||||
\ * COROUTINES LEXEME
|
||||
\
|
||||
: CO: ( -- ) R> PUT ; \ Register continuation as coroutine. Exit.
|
||||
: CO ( -- ) R> PUT TAKE >R ; \ Co-route.
|
||||
: GO ( -- ) BEGIN NOEMPTY? WHILE ;CO REPEAT ; \ :-)
|
||||
\
|
||||
\ * CHANNELS LEXEME
|
||||
\
|
||||
: CHAN? ( a--f ) 2@ XOR ;
|
||||
Loading…
Add table
Add a link
Reference in a new issue