Доброго времени суток.
В большинстве случаев, данная проблема решалась без каких-либо неприятностей по средством подписывания типа, но при работе с mongoDB это приходится делать очень часто для одного из операторов:
(=:) :: Val v => Label -> v -> Field
foo = "aoeu" =: "aeou"
foo' = "aoeu" =: ("aeou" :: String)
Другой способ (сейчас практикую), создание функции с более жёстким типов (в данном случае с типом, а именно:
(=::) :: Label -> String -> Field
(=::) = (=:)