2010年06月16日 at 9:28 am
#1245
Keymaster
范畴理论是数学中抽象代数(abstract algebra)的一个分支,主要是以最抽象的方式研究数学结构以及它们之间的关系。 每个范畴(category)包括一组对象(object),一组态射(morphism),以及态射之间的合成。 对应于程序中的类型系统,这组对象可以看成某个数据类型所涵盖的所有对象,而态射则可以看成函数,态射合成对应于函数合成。在函数式语言Haskell中,这种对应更加清晰,而且Haskell中的functor和monad都直接来源于范畴理论中对应的概念。
更详细的可以参考:
http://en.wikipedia.org/wiki/Category_theory
http://en.wikibooks.org/wiki/Haskell/Category_theory
从这里也看出,高级的数学知识对从更抽象和更高层的角度来理解编程是有意义的。但不是所有的人都习惯数学的思维方式,所以对一般程序员我并不推荐深入地学习,这种素养的培养比编程要困难得多。