|
|
@ -122,9 +122,10 @@ data BankersQueue a = BankersQueue {
|
|
122
|
122
|
enqueue x (BankersQueue fs f rs r) = check $ BankersQueue fs f (rs + 1) (cons x r)
|
|
123
|
123
|
|
|
124
|
124
|
dequeue (BankersQueue fs Nil rs Nil) = Nothing
|
|
125
|
|
dequeue (BankersQueue fs Nil rs r) = Just (x, check $ BankersQueue fs Nil (rs - 1) r')
|
|
126
|
|
where (Just x) = last r
|
|
127
|
|
r' = butLast r
|
|
|
125
|
-- not needed because of `check` invariant?
|
|
|
126
|
--dequeue (BankersQueue fs Nil rs r) = Just (x, check $ BankersQueue fs Nil (rs - 1) r')
|
|
|
127
|
-- where (Just x) = last r
|
|
|
128
|
-- r' = butLast r
|
|
128
|
129
|
dequeue (BankersQueue fs (Cons x fr) rs r) =
|
|
129
|
130
|
Just (x, check $ BankersQueue (fs - 1) fr rs r)
|
|
130
|
131
|
|