RosettaCodeData/Task/Queue-Usage/Bracmat/queue-usage.bracmat

39 lines
708 B
Plaintext

( queue
= (list=)
(enqueue=.(.!arg) !(its.list):?(its.list))
( dequeue
= x
. !(its.list):?(its.list) (.?x)
& !x
)
(empty=.!(its.list):)
)
& new$queue:?Q
& ( (Q..enqueue)$1
& (Q..enqueue)$2
& (Q..enqueue)$3
& out$((Q..dequeue)$)
& (Q..enqueue)$4
& out$((Q..dequeue)$)
& out$((Q..dequeue)$)
& out
$ ( The
queue
is
((Q..empty)$&|not)
empty
)
& out$((Q..dequeue)$)
& out
$ ( The
queue
is
((Q..empty)$&|not)
empty
)
& out$((Q..dequeue)$)
& out$Success!
| out$"Attempt to dequeue failed"
)
;