factor/library/collections/queues.factor

27 lines
600 B
Factor
Raw Permalink Normal View History

! Copyright (C) 2005 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
2005-08-23 15:50:32 -04:00
IN: queues
USING: errors kernel lists math sequences vectors ;
TUPLE: queue in out ;
C: queue ( -- queue ) ;
: queue-empty? ( queue -- ? )
dup queue-in swap queue-out or not ;
: enque ( obj queue -- )
[ queue-in cons ] keep set-queue-in ;
: deque ( queue -- obj )
2005-08-23 15:50:32 -04:00
dup queue-out [
uncons rot set-queue-out
] [
dup queue-in [
reverse uncons pick set-queue-out
f rot set-queue-in
] [
"Empty queue" throw
] if*
2005-09-24 15:21:17 -04:00
] if* ;