Haskell98 invariant functors
