Haskell implementation of convergent and commutative replicated data types