module Misc where import Data.Aeson import Data.Aeson.Types unpackEither :: MonadFail m => Either String a -> m a unpackEither (Left s) = fail s unpackEither (Right a) = pure a (.::) :: FromJSON a => Parser Object -> Key -> Parser a v .:: k = v >>= (.: k)