Haskell 98 pointed and copointed data
