úÎ ¼ Ê"Implementation of a Treiber stack.BSD36Julian Sutherland (julian.sutherland10@imperial.ac.uk)None;3A lock-free concurrent Treiber stack usable in any @, m, that is paired with a reference type, r, by an instance of . Can use Specializations  and .TreiberStack inside the  .TreiberStack inside the   .$Creates a new empty instance of the v. Internally implemented with a reference of type r, which is why they must be atomically modifiable. Initially empty.Pushes an element on to a  in a lock-free manner.Pops an element of a  in a lock-free manner. Returns   if the stack is empty.       Treiber-0.0.4!Data.NonBlocking.LockFree.Treiber TreiberStackTreiberStackSTMTreiberStackIOnewTreiberStackpushTreiberStackpopTreiberStackbaseGHC.BaseMonad ref-mtl-0.3Control.Monad.RefMonadAtomicRef GHC.Conc.SyncSTMghc-prim GHC.TypesIO Data.MaybeNothing TreiberElemEndcasptrEq$fEqTreiberElem