cat S; fun f : S -> S ; fun g : S ; lin f s = { s = s.s } ; lin g = { s = "g" } ;