[Haskell-cafe] RankNTypes + ConstraintKinds to use Either as a "union"