summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Truzjan <pxqr.sta@gmail.com>2013-09-30 05:26:09 +0400
committerSam Truzjan <pxqr.sta@gmail.com>2013-09-30 05:26:09 +0400
commitad6235f30d9defe8b0be6e0fb5b873e5fc14d067 (patch)
treef4cb57e0fc3b8df3fbae8a1ac70518ae0996f215
parentd9047c6597d6d99858d15514392096b997cf9b9d (diff)
Introduce Assoc datatype
-rw-r--r--src/Data/BEncode.hs15
1 files changed, 7 insertions, 8 deletions
diff --git a/src/Data/BEncode.hs b/src/Data/BEncode.hs
index f12d116..ebeed6e 100644
--- a/src/Data/BEncode.hs
+++ b/src/Data/BEncode.hs
@@ -648,14 +648,13 @@ fromDict _ _ = decodingError (show (typeOf inst))
648-- > ] 648-- > ]
649-- > ... 649-- > ...
650-- 650--
651type Assoc = Maybe BPair 651data Assoc = Some BKey BValue
652 652 | None
653type BPair = (BKey, BValue)
654 653
655-- TODO better name 654-- TODO better name
656-- | Make required key value pair. 655-- | Make required key value pair.
657(.=!) :: BEncode a => BKey -> a -> Assoc 656(.=!) :: BEncode a => BKey -> a -> Assoc
658k .=! v = Just (k, toBEncode v) 657k .=! v = Some k (toBEncode v)
659{-# INLINE (.=!) #-} 658{-# INLINE (.=!) #-}
660 659
661infix 6 .=! 660infix 6 .=!
@@ -664,15 +663,15 @@ infix 6 .=!
664-- appear in resulting bencoded dictionary. 663-- appear in resulting bencoded dictionary.
665-- 664--
666(.=?) :: BEncode a => BKey -> Maybe a -> Assoc 665(.=?) :: BEncode a => BKey -> Maybe a -> Assoc
667_ .=? Nothing = Nothing 666_ .=? Nothing = None
668k .=? Just v = Just (k, toBEncode v) 667k .=? Just v = Some k (toBEncode v)
669{-# INLINE (.=?) #-} 668{-# INLINE (.=?) #-}
670 669
671infix 6 .=? 670infix 6 .=?
672 671
673(.:) :: Assoc -> BDict -> BDict 672(.:) :: Assoc -> BDict -> BDict
674Nothing .: d = d 673None .: d = d
675Just (k, v) .: d = Cons k v d 674Some k v .: d = Cons k v d
676{-# INLINE (.:) #-} 675{-# INLINE (.:) #-}
677 676
678infixr 5 .: 677infixr 5 .: