module Sym.Internal.Size (Size (..)) where

import qualified Data.Set as Set

class Size a where
    size :: a -> Int

instance Size [a] where
    size = length

instance Size (Set.Set a) where
    size = Set.size

instance Size a => Size (Maybe a) where
    size Nothing  = 0
    size (Just x) = size x