{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE KindSignatures #-} {-# LANGUAGE NoImplicitPrelude #-} module Data.Morpheus.Server.Types.Types ( Undefined (..), Pair (..), MapKind (..), mapKindFromList, ) where import Data.Functor (fmap) import GHC.Generics ( Generic, ) import Prelude ( Applicative (..), Int, Show, length, uncurry, ) data Undefined (m :: * -> *) = Undefined deriving (Show, Generic) data Pair k v = Pair { key :: k, value :: v } deriving (Generic) data MapKind k v m = MapKind { size :: Int, pairs :: m [Pair k v] } deriving (Generic) mapKindFromList :: (Applicative m) => [(k, v)] -> MapKind k v m mapKindFromList inputPairs = MapKind { size = length inputPairs, pairs = resolvePairs } where resolvePairs = pure (fmap (uncurry Pair) inputPairs)