Ben sıkıştırılabilir bir dosyayı okumak için bu kod parçacığını yazdı: Sadece iyi derlerIOError'ın sıkıştırması nasıl yapılır?
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
, ancak bu sıkıştırılmamış dosyaları işlemek için hiçbir geçerli bir yol gibi görünüyor. sıkıştırılmış dosya üzerinde kod çalıştırma güzel çalışır, ancak bir sıkıştırılmamış dosya bir durumla başarısız: Bunu mümkün kılmak için nasıl
*** Exception: Codec.Compression.Zlib: incorrect header check
bir fikrin?
'IO.try' kullanımdan kaldırılmıştır (Sana Data.ByteString.Lazy L. olarak nitelendirilen ithal var tahmin) ... Control.Exception.try' hakkında ne? http://hackage.haskell.org/packages/archive/base/latest/doc/html/Control-Exception.html#v:try –
Daha da önemlisi, 'IO.try' özellikle saf kodundan istisnalar yakalamaz Control.Exception.try ise. – dave4420