úÎ ø n+Implementation of a lock-free Spin Counter.BSD36Julian Sutherland (julian.sutherland10@imperial.ac.uk)NonewA lock-free concurrent Spin counter usable in any monad, m, that is paired with a reference type, r, by an instance of . Can use Specializations  and !SpinCounter inside the STM Monad. SpinCounter inside the IO Monad.Creates a new instance of the W data type initialized to value of the input to the function, an instance of the class .Increments an instance of the ( data type by one in a lock-free manner.&Reads the value of an instance of the ! data type in a lock-free manner.     SpinCounter-0.0.1%Data.NonBlocking.LockFree.SpinCounter SpinCounterSpinCounterSTM SpinCounterIOnewSpinCounterincSpinCounterreadSpinCounter ref-mtl-0.3Control.Monad.RefMonadAtomicRefbaseGHC.RealIntegralcas