From 10fec3453ab8f2d29ad4634676a9238d7323c4ab Mon Sep 17 00:00:00 2001 From: krasimir Date: Wed, 24 Jun 2009 12:08:32 +0000 Subject: [PATCH] make the Functor Get instance in Data.Binary strict to be sure that the decoder is strict --- src/Data/Binary/Get.hs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Data/Binary/Get.hs b/src/Data/Binary/Get.hs index bdc07d985..4b5625359 100644 --- a/src/Data/Binary/Get.hs +++ b/src/Data/Binary/Get.hs @@ -108,8 +108,8 @@ data S = S {-# UNPACK #-} !B.ByteString -- current chunk newtype Get a = Get { unGet :: S -> (a, S) } instance Functor Get where - fmap f m = Get (\s -> let (a, s') = unGet m s - in (f a, s')) + fmap f m = Get (\s -> case unGet m s of + (a, s') -> (f a, s')) {-# INLINE fmap #-} #ifdef APPLICATIVE_IN_BASE