lama_byterun/stdlib/Queue.lama
2025-01-31 00:02:40 +03:00

26 lines
431 B
Text

import List;
fun emptyQueue () {
[{}, {}]
}
fun isEmptyQueue (q) {
case q of
[{}, {}] -> true
| _ -> false
esac
}
fun enqueue ([pop, push], x) {
[pop, x : push]
}
fun dequeue ([pop, push]) {
case pop of
x : pop -> [[pop, push], x]
| _ -> case push of
{} -> failure ("dequeueing from empty queue\n")
| _ -> dequeue ([reverse (push), {}])
esac
esac
}