{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE FunctionalDependencies #-} {-# LANGUAGE NoImplicitPrelude #-} module Data.Morpheus.Ext.Elems ( Elems (..), size, ) where import qualified Data.HashMap.Lazy as HM import Instances.TH.Lift () import Relude class Elems a coll | coll -> a where elems :: coll -> [a] instance Elems a (HashMap k a) where elems :: HashMap k a -> [a] elems = HashMap k a -> [a] forall k v. HashMap k v -> [v] HM.elems instance Elems a [a] where elems :: [a] -> [a] elems = [a] -> [a] forall a. a -> a id size :: Elems a coll => coll -> Int size :: coll -> Int size = [a] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length ([a] -> Int) -> (coll -> [a]) -> coll -> Int forall b c a. (b -> c) -> (a -> b) -> a -> c . coll -> [a] forall a coll. Elems a coll => coll -> [a] elems