on master help sign in
Experimental HashMap fun
1156fcbBryan O'Sullivan
Data/Aeson/Encode.hs+1−1
@@ -22,7 +22,7 @@ import Data.Monoid (mappend)
22import Numeric (showHex)
22import Numeric (showHex)
23import qualified Data.ByteString.Char8 as B
23import qualified Data.ByteString.Char8 as B
24import qualified Data.ByteString.Lazy.Char8 as L
24import qualified Data.ByteString.Lazy.Char8 as L
25−import qualified Data.Map as M
25+import qualified Data.HashMap as M
26import qualified Data.Text as T
26import qualified Data.Text as T
27import qualified Data.Vector as V
27import qualified Data.Vector as V
28
28
Data/Aeson/Parser.hs+1−1
@@ -25,7 +25,7 @@ import Data.Attoparsec.Char8
25import Data.Bits ((.|.), shiftL)
25import Data.Bits ((.|.), shiftL)
26import Data.ByteString as B
26import Data.ByteString as B
27import Data.Char (chr)
27import Data.Char (chr)
28−import Data.Map as Map
28+import Data.HashMap as Map
29import Data.Monoid (mappend, mempty)
29import Data.Monoid (mappend, mempty)
30import Data.Text as T
30import Data.Text as T
31import Data.Text.Encoding (decodeUtf8)
31import Data.Text.Encoding (decodeUtf8)
Data/Aeson/Types.hs+4−4
@@ -27,7 +27,7 @@ module Data.Aeson.Types
27
27
28import Control.Applicative
28import Control.Applicative
29import Control.DeepSeq (NFData(..))
29import Control.DeepSeq (NFData(..))
30−import Data.Map (Map)
30+import Data.HashMap (HashMap)
31import qualified Data.ByteString as B
31import qualified Data.ByteString as B
32import qualified Data.ByteString.Lazy as LB
32import qualified Data.ByteString.Lazy as LB
33import Data.Text.Encoding (decodeUtf8, encodeUtf8)
33import Data.Text.Encoding (decodeUtf8, encodeUtf8)
@@ -38,10 +38,10 @@ import Data.Time.Format (formatTime, parseTime)
38import Data.Typeable (Typeable)
38import Data.Typeable (Typeable)
39import Data.Vector (Vector)
39import Data.Vector (Vector)
40import System.Locale (defaultTimeLocale)
40import System.Locale (defaultTimeLocale)
41−import qualified Data.Map as M
41+import qualified Data.HashMap as M
42import qualified Data.Vector as V
42import qualified Data.Vector as V
43
43
44−type Object = Map Text Value
44+type Object = HashMap Text Value
45type Array = Vector Value
45type Array = Vector Value
46
46
47-- | A JSON value represented as a Haskell value.
47-- | A JSON value represented as a Haskell value.
@@ -95,7 +95,7 @@ obj .:? key = case M.lookup key obj of
95-- | Create a 'Value' from a list of 'Object's. If duplicate
95-- | Create a 'Value' from a list of 'Object's. If duplicate
96-- keys arise, earlier keys and their associated values win.
96-- keys arise, earlier keys and their associated values win.
97object :: [Object] -> Value
97object :: [Object] -> Value
98−object = Object . M.unions
98+object = Object . M.fromList . concat . map M.toList
99{-# INLINE object #-}
99{-# INLINE object #-}
100
100
101-- | A type that can be converted to JSON.
101-- | A type that can be converted to JSON.
aeson.cabal+1−1
@@ -72,7 +72,7 @@ library
72 base == 4.*,
72 base == 4.*,
73 blaze-builder >= 0.2.1.4,
73 blaze-builder >= 0.2.1.4,
74 bytestring,
74 bytestring,
75− containers,
75+ unordered-containers,
76 deepseq,
76 deepseq,
77 old-locale,
77 old-locale,
78 text >= 0.11.0.2,
78 text >= 0.11.0.2,