Parameterizing over finite maps
Second attempt
Corresponds to the following Haskell code:
class FiniteMap fm k | fm->k where
empty :: v -> fm v
lookup :: fm v -> k -> v
update :: k -> v -> fm v -> fm v
Problem: solved!
Implementations can impose restrictions on the key type:
instance Eq k => FiniteMap ((->) k) k where ...