Я написал этот фрагмент кода для чтения файла, который может быть сжат:
import Codec.Compression.GZip
import IO -- using IO.try
read file = do
let f = L.readFile file
let c = fmap decompress $ f
unzipped <- try c
case unzipped of
Right b -> return b
Left _ -> f
Это компилируется просто отлично, но кажется, что это недопустимый способ обработки несжатых файлов. Запуск кода со сжатым файлом работает хорошо, но с несжатым файлом возникает исключение:
*** Exception: Codec.Compression.Zlib: incorrect header check
Есть идеи, как это сделать возможным?