Как поймать распаковку IOError?

Я написал этот фрагмент кода для чтения файла, который может быть сжат:

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

Есть идеи, как это сделать возможным?

5
задан fho 6 April 2012 в 11:52
поделиться