monad是高阶抽象类型;
包含类型构造器;
monad抽象的核心是类型封装和类型转化(map)。
实现monad的的类型必须实现(基础)类型的封装和类型转化的功能;
在此基础上实现其他的功能(基本依赖于map);
实现类型的衍生功能依赖于map的实现;