Versionbump: Utils.hs: Template haskell fix; instance commented out for later version bump.

This commit is contained in:
Stephan Barth 2024-02-15 04:13:48 +01:00
parent df89d4a379
commit 98626ecb4e

View File

@ -2,6 +2,9 @@
--
-- SPDX-License-Identifier: AGPL-3.0-or-later
-- unused imports because of commented out FromJSON and ToJSON instances
{-# OPTIONS_GHC -Wwarn=unused-imports #-}
module Utils
( module Utils
, module Data.Containers.ListUtils
@ -157,6 +160,8 @@ import qualified Data.UUID as UUID
import Data.Containers.ListUtils
import qualified Data.Aeson.KeyMap as KeyMap
{-# ANN module ("HLint: ignore Use asum" :: String) #-}
@ -1665,7 +1670,7 @@ kmaclazy :: forall a string key ba chunk.
-> KMAC a
kmaclazy str k = KMAC.finalize . KMAC.updates (KMAC.initialize @a str k) . toChunks
emptyHash :: forall a. HashAlgorithm a => Q (TExp (Digest a))
emptyHash :: forall a. HashAlgorithm a => Code Q (Digest a)
-- ^ Hash of `mempty`
--
-- Computationally preferrable to computing the hash at runtime
@ -1864,10 +1869,12 @@ instance (Hashable k, Semigroup v) => Semigroup (MergeHashMap k v) where
(MergeHashMap a) <> (MergeHashMap b) = MergeHashMap $ HashMap.unionWith (<>) a b
instance (Hashable k, Semigroup v) => Monoid (MergeHashMap k v) where
mempty = MergeHashMap HashMap.empty
{-
instance (Hashable k, FromJSON v, FromJSONKey k, Semigroup v) => FromJSON (MergeHashMap k v) where
parseJSON = case Aeson.fromJSONKey of
Aeson.FromJSONKeyCoerce -> Aeson.withObject "HashMap ~Text" $
coerce @(Aeson.Parser (HashMap k v)) @(Aeson.Parser (MergeHashMap k v)) . fmap HashMap.fromList . traverse (\(k, v) -> (coerce @Text @k k, ) <$> parseJSON v Aeson.<?> Aeson.Key k) . HashMap.toList
--coerce @(Aeson.Parser (HashMap k v)) @(Aeson.Parser (MergeHashMap k v)) . fmap HashMap.fromList . traverse (\(kk, v) -> let k = fromText kk in (coerce @Text @k k, ) <$> parseJSON v Aeson.<?> Aeson.Key kk) . KeyMap.toList
coerce @(Aeson.Parser (HashMap k v)) @(Aeson.Parser (MergeHashMap k v)) . fmap HashMap.fromList . traverse (\(k, v) -> (coerce @Text @k k, ) <$> parseJSON v Aeson.<?> Aeson.Key k) . HashMap.toList
Aeson.FromJSONKeyText f -> Aeson.withObject "HashMap" $
fmap MergeHashMap . HashMap.foldrWithKey (\k v m -> HashMap.insertWith (<>) (f k) <$> parseJSON v Aeson.<?> Aeson.Key k <*> m) (pure mempty)
Aeson.FromJSONKeyTextParser f -> Aeson.withObject "HashMap" $
@ -1888,7 +1895,7 @@ instance (Hashable k, FromJSON v, FromJSONKey k, Semigroup v) => FromJSON (Merge
parseJSONElemAtIndex :: (Value -> Aeson.Parser a) -> Int -> Vector Value -> Aeson.Parser a
parseJSONElemAtIndex p idx ary = p (V.unsafeIndex ary idx) Aeson.<?> Aeson.Index idx
-}
newtype MergeMap k v = MergeMap { unMergeMap :: Map k v }
deriving (Show, Generic, Data)
@ -1918,7 +1925,7 @@ instance (Ord k, Semigroup v) => Semigroup (MergeMap k v) where
(MergeMap a) <> (MergeMap b) = MergeMap $ Map.unionWith (<>) a b
instance (Ord k, Semigroup v) => Monoid (MergeMap k v) where
mempty = MergeMap Map.empty
instance (Ord k, FromJSON v, FromJSONKey k, Semigroup v) => FromJSON (MergeMap k v) where
{-instance (Ord k, FromJSON v, FromJSONKey k, Semigroup v) => FromJSON (MergeMap k v) where
parseJSON = case Aeson.fromJSONKey of
Aeson.FromJSONKeyCoerce -> Aeson.withObject "Map ~Text" $
coerce @(Aeson.Parser (Map k v)) @(Aeson.Parser (MergeMap k v)) . fmap Map.fromList . traverse (\(k, v) -> (coerce @Text @k k, ) <$> parseJSON v Aeson.<?> Aeson.Key k) . HashMap.toList
@ -1942,7 +1949,8 @@ instance (Ord k, FromJSON v, FromJSONKey k, Semigroup v) => FromJSON (MergeMap k
parseJSONElemAtIndex :: (Value -> Aeson.Parser a) -> Int -> Vector Value -> Aeson.Parser a
parseJSONElemAtIndex p idx ary = p (V.unsafeIndex ary idx) Aeson.<?> Aeson.Index idx
-}
--------------
-- FilePath --
--------------