Это код, который у меня есть:
import qualified System.IO as IO
writeSurrogate :: IO ()
writeSurrogate = do
IO.writeFile "/home/sibi/surrogate.txt" ['\xD800']
Выполнение вышеуказанного кода дает ошибку:
text-tests: /home/sibi/surrogate.txt: commitBuffer: invalid argument (invalid character)
Причина в том, что это предотвращается самим GHC, поскольку они являются суррогатными кодовыми точками: https://github.com/ghc/ghc/blob/21f0f56164f50844c2150c62f950983b2376f8b6/libraries/base/GHC/IO/Encoding/Failure.hs#L114
Я хочу написать несколько тестовых файлов, которые должны иметь эти данные. Прямо сейчас я использую Python для достижения того, чего я хочу - но я хотел бы знать, есть ли способ (обходной путь с использованием Haskell) для достижения этого.