Tricky. Обычно, кодировка - это мое предложение о кодировании и декодировании текста, но я не верю, что оно предлагает именно то, что вы просите. Это близко, в том, что он предлагает
decodeChar :: (Encoding enc, ByteSource m) => enc -> m Char
, который вы можете повторить, чтобы получить m String
. Поймав ошибки, выданные decodeChar
, вы узнаете, дошли ли вы до конца фрагмента. Беглый взгляд на некоторые из других пакетов кодирования в Hackage показывает, что им либо потребуется тот же подход, либо потребуется патч для предоставления функции, аналогичной описанной выше, для внутреннего использования.