Parameterizing over finite maps
First attempt
Corresponds to the following Haskell code:
class FiniteMap fm where
empty :: v -> fm k v
lookup :: fm k v -> k -> v
update :: k -> v -> fm k v -> fm k v
Problem: too general
No implementation can be completely polymorphic in the type of keys
Also a reminder of the problem with type classes for container types in Haskell