Исправление qnikst, (текущая версия) :
обещанный вариант на байтстрингах с фьюзингом и прочими радостями:
unescape xs = toLazyByteString (s <> (foldl' (<>) mempty t'))
where (s,t) = span (/=0x7D) xs
t' = map (\x -> word8 (head x .|. 0x7D) <> bytestring (tail x)) (split 0x7D)
можно было написать сильно проще, но не правильно, всё равно никто проверять не будет.
Исходная версия qnikst, :
обещанный вариант на байтстрингах с фьюзингом и прочими радостями:
unescape xs = toLazyByteString (s <> (foldl' (<>) mempty t'))
where (s,t) = span (/=0x7D) xs
t' = map (\x -> word8 (head x) <> bytestring (tail x)) (split 0x7D)
можно было написать сильно проще, но не правильно, всё равно никто проверять не будет.