Haskell 98 pointed and copointed data types.