The atomic-primops package

After GHC 7.4 a new casMutVar# primop became available, but it's
difficult to use safely, because pointer equality is a highly
unstable property in Haskell. This library provides a safer method
based on the concept of Tickets.

Also, this library uses the foreign primop capability of GHC to
add access to other variants that may be of
interest, specifically, compare and swap inside an array.