{-# 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 (Int -> Undefined m -> ShowS [Undefined m] -> ShowS Undefined m -> String (Int -> Undefined m -> ShowS) -> (Undefined m -> String) -> ([Undefined m] -> ShowS) -> Show (Undefined m) forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall (m :: * -> *). Int -> Undefined m -> ShowS forall (m :: * -> *). [Undefined m] -> ShowS forall (m :: * -> *). Undefined m -> String showList :: [Undefined m] -> ShowS $cshowList :: forall (m :: * -> *). [Undefined m] -> ShowS show :: Undefined m -> String $cshow :: forall (m :: * -> *). Undefined m -> String showsPrec :: Int -> Undefined m -> ShowS $cshowsPrec :: forall (m :: * -> *). Int -> Undefined m -> ShowS Show, (forall x. Undefined m -> Rep (Undefined m) x) -> (forall x. Rep (Undefined m) x -> Undefined m) -> Generic (Undefined m) forall x. Rep (Undefined m) x -> Undefined m forall x. Undefined m -> Rep (Undefined m) x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a forall (m :: * -> *) x. Rep (Undefined m) x -> Undefined m forall (m :: * -> *) x. Undefined m -> Rep (Undefined m) x $cto :: forall (m :: * -> *) x. Rep (Undefined m) x -> Undefined m $cfrom :: forall (m :: * -> *) x. Undefined m -> Rep (Undefined m) x Generic) data Pair k v = Pair { Pair k v -> k key :: k, Pair k v -> v value :: v } deriving ((forall x. Pair k v -> Rep (Pair k v) x) -> (forall x. Rep (Pair k v) x -> Pair k v) -> Generic (Pair k v) forall x. Rep (Pair k v) x -> Pair k v forall x. Pair k v -> Rep (Pair k v) x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a forall k v x. Rep (Pair k v) x -> Pair k v forall k v x. Pair k v -> Rep (Pair k v) x $cto :: forall k v x. Rep (Pair k v) x -> Pair k v $cfrom :: forall k v x. Pair k v -> Rep (Pair k v) x Generic) data MapKind k v m = MapKind { MapKind k v m -> Int size :: Int, MapKind k v m -> m [Pair k v] pairs :: m [Pair k v] } deriving ((forall x. MapKind k v m -> Rep (MapKind k v m) x) -> (forall x. Rep (MapKind k v m) x -> MapKind k v m) -> Generic (MapKind k v m) forall x. Rep (MapKind k v m) x -> MapKind k v m forall x. MapKind k v m -> Rep (MapKind k v m) x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a forall k v (m :: * -> *) x. Rep (MapKind k v m) x -> MapKind k v m forall k v (m :: * -> *) x. MapKind k v m -> Rep (MapKind k v m) x $cto :: forall k v (m :: * -> *) x. Rep (MapKind k v m) x -> MapKind k v m $cfrom :: forall k v (m :: * -> *) x. MapKind k v m -> Rep (MapKind k v m) x Generic) mapKindFromList :: (Applicative m) => [(k, v)] -> MapKind k v m mapKindFromList :: [(k, v)] -> MapKind k v m mapKindFromList [(k, v)] inputPairs = MapKind :: forall k v (m :: * -> *). Int -> m [Pair k v] -> MapKind k v m MapKind { size :: Int size = [(k, v)] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length [(k, v)] inputPairs, pairs :: m [Pair k v] pairs = m [Pair k v] resolvePairs } where resolvePairs :: m [Pair k v] resolvePairs = [Pair k v] -> m [Pair k v] forall (f :: * -> *) a. Applicative f => a -> f a pure (((k, v) -> Pair k v) -> [(k, v)] -> [Pair k v] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap ((k -> v -> Pair k v) -> (k, v) -> Pair k v forall a b c. (a -> b -> c) -> (a, b) -> c uncurry k -> v -> Pair k v forall k v. k -> v -> Pair k v Pair) [(k, v)] inputPairs)