One comment on your .cabal file: it's usually preferred to write "base= 3 && <5" rather than "base >= 3 && <= 4".
In particular if e.g. base-4.2.0.0 doesn't fall in the latter range.
I don't know how exactly Cabal interprets these bounds, but it's a
possibility since 4.2 > 4.0.