-- | Generate a value of a given type.
typedGen :: (MonadRandom m, Ord tc, Ord tv)
  => Map tc (DataGen c tv m) -> Map tv (m (DataTree c))
  -> Type tc tv -> m (DataTree c)
typedGen g argGen (TcVar v) = argGen Map.! v
typedGen :: (MonadRandom m, Ord tc, Ord tv)
  => Map tc (DataGen c tv m) -> Map tv (m (DataTree c))
  -> Type tc tv -> m (DataTree c)
typedGen g argGen (TcVar v) = argGen Map.! v
typedGen g argGen (TcVar v) = argGen Map.! v