hw-fingertree-strict-0.1.0.3: src/HaskellWorks/Data/Item/Strict.hs
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
module HaskellWorks.Data.Item.Strict where
import Control.DeepSeq (NFData)
import GHC.Generics (Generic)
import HaskellWorks.Data.FingerTree.Strict
data Item k a = Item !k !a deriving (Eq, Show, Generic, NFData)
instance Functor (Item k) where
fmap f (Item i t) = Item i (f t)
instance Foldable (Item k) where
foldMap f (Item _ x) = f x
instance Traversable (Item k) where
traverse f (Item i x) = Item i <$> f x
instance (Monoid k) => Measured k (Item k a) where
measure (Item k _) = k