I really don't see why that extra x parameter is needed or works.. rewrite it in simpler form. I also might be introducing breakage for older GHC's by using unconditionally <$>, but I'm not seeing that for some reason (tested back to ghc 7.6).