{-# Language FunctionalDependencies #-} module Data.Measured.Class where class Semigroup v => Measured v a | a -> v where measure :: a -> v class Measured v a => CanInsert v a where insertA :: a -> v -> v class Measured v a => CanDelete v a where deleteA :: a -> v -> Maybe v