finish chap09 functors in RealworldOCaml