úεA     SafeAbstract Stack data typeCreate new StackPush item onto Stack 0("x)("s)(stackPop (stackPush s x) == Just (s,x))<Pop most recently added item without removing from the Stack vstackPeek stackNew == Nothing ("x)("s)(stackPeek (stackPush s x) == Just x) ("s)(stackPeek s == fmap snd (stackPop s))'Pop most recently added item from Stack MstackPop stackNew == Nothing ("x)("s)(stackPop (stackPush s x) == Just (s,x))Test if stack is empty €stackIsEmpty stackNew == True ("x)("s)(stackIsEmpty (stackPush s x) == True) ("s)((stackSize s == 0) !Ô (stackIsEmpty s == True))1Compute number of elements contained in the Stack YstackSize stackNew == 0 ("x)("s)((stackSize s == n) !Ò (stackSize (stackPush s x) == n+1))Safe Synchronized stack data type Create new Stack Push item onto Stack <Pop most recently added item without removing from the Stack <Pop most recently added item without removing from the Stack'Automatically retries if stack is empty'Pop most recently added item from Stack'Pop most recently added item from Stack'Automatically retries if stack is emptyTest if stack is empty1Compute number of elements contained in the Stack      SafeCreate new StackPush item onto Stack<Pop most recently added item without removing from the Stack<Pop most recently added item without removing from the StackBlocks if stack is empty'Pop most recently added item from Stack'Pop most recently added item from StackBlocks if stack is emptyTest if stack is empty1Compute number of elements contained in the Stack            "Stack-0.3.0-CmYnkOkmuZm9ppiHLJHUnG Data.StackControl.Concurrent.STM.StackControl.Concurrent.StackStackstackNew stackPush stackPeekstackPop stackIsEmpty stackSize $fReadStack $fShowStack stackTryPeek stackTryPop