Haskell quaternion library