我写了这个代码片段来读取一个可能被压缩的文件:
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
关于如何使这成为可能的任何想法?