diff options
Diffstat (limited to 'Data/ByteStringBuilder.hs')
-rw-r--r-- | Data/ByteStringBuilder.hs | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/Data/ByteStringBuilder.hs b/Data/ByteStringBuilder.hs index 859d710..6f0222e 100644 --- a/Data/ByteStringBuilder.hs +++ b/Data/ByteStringBuilder.hs @@ -25,8 +25,18 @@ putB = put . BSL.singleton runBuilder :: Builder -> ByteString runBuilder (ByteStringBuilder bs _) = bs +instance Functor ByteStringBuilder where + fmap f bb = bb >>= (return . f) + +instance Applicative ByteStringBuilder where + (<*>) afn aa = do + fn <- afn + a <- aa + return (fn a) + + pure = return + instance Monad ByteStringBuilder where ByteStringBuilder a _ >> ByteStringBuilder b c = ByteStringBuilder (a `append` b) c a@(ByteStringBuilder _ b) >>= func = a >> func b return = ByteStringBuilder BSL.empty - fail = error |