Cabal transitive constraint puzzle