diff --git a/src/Data/Binary/Class.hs b/src/Data/Binary/Class.hs index 1efbe37..1cd5016 100644 --- a/src/Data/Binary/Class.hs +++ b/src/Data/Binary/Class.hs @@ -491,7 +491,10 @@ freezeByteArray arr = IO $ \s -> instance (Binary a,Integral a) => Binary (R.Ratio a) where put r = put (R.numerator r) <> put (R.denominator r) - get = liftM2 (R.%) get get + get = do + n <- get + d <- get + if d == 0 then fail "zero denominator" else pure (n R.% d) instance Binary a => Binary (Complex a) where {-# INLINE put #-}