Я немного смущен этим поведением attoparsec.
$ ghci
> :m Data.Attoparsec.Text
> :m + Data.Text
> parse (string (pack "module")) (pack "mox")
Partial _
> parse (string (pack "module")) (pack "moxxxx")
Fail "moxxxx" [] "Failed reading: takeWith"
>
Зачем нужны дополнительные символы для запуска Fail?
Не следует ли это сбой, как только встретится первый "x"?