JS函数式编程【译】5. 范畴论

第五章 范畴论

托马斯·沃森(时任IBM董事长)说过一句著名的话,“我想全世界只有五台计算机的市场”。 那是1948年,当时,每一个人都认为计算机只会被用于两件事情:数学和工程。 即便是技术上最大胆的预想也不会认为有一天计算机可以把西班牙语翻译成英语, 或者模拟整个天气系统。在那时最快的计算机是IBM的SSEC,每秒能计算50次,显示终端要在15年后才出现, 多任务处理意味着多个用户终端共享一个单线程。晶体管改变了一切,然而对技术的远见没有跟上。 在1977年,Ken Olson(DEC创始人)说过另外一个愚蠢的预言:“任何人都没有理由想在家里拥有个计算机”。html

对于咱们来讲很明显计算机不仅是为科学家和工程师所用,但这只是过后诸葛。在70年前认为计算机只能做数学计算是很正常的。 沃森不只没有意识到计算机会改变社会,他尚未意识到数学的改革和演进的能力。算法

不过计算机和数学的潜力并不是被全部人忽视。约翰·麦卡锡在1958年发明了Lisp,这是一个革命性的基于算法的语言, 它把计算机带入了新纪元。从那开始,Lisp对使用抽象层的思想(编译、解释、虚拟化)起到重要做用, 这促使了计算机从一个只能用于数学的机器变成了今天这样。编程

从Lisp到Scheme,一个JavaScript的直接原型。如今它给咱们带来了一个轮回。若是计算机在核心上只是一个作数学的机器, 那么它在以数学为基础编程范式上具备优越性是合理的数组

这里所说的“数学”并非指计算机明显能作的数字运算,而是要描述为离散数学:对于离散的、 对于诸如逻辑上的声明或者计算机语言命令的数学结构的研究。 经过把代码做为离散的数学结构来对待,咱们能够把概念和想法应用到数学上。 这也就是为何函数式编程在人工智能、图谱搜索、模式识别以及其它计算机科学中具备挑战性的领域里具备如此重要的地位。安全

这一章咱们将针对平常编程中的问题对一些概念和它们的应用进行试验,包括:函数式编程

  • 范畴论(Category theory)
  • 态射(Morphisms)
  • 函子(Functors)
  • Maybes
  • Promises
  • Lenses
  • 函数组合

利用这些概念咱们能够轻松安全地写出整个库和API。而且咱们要从对范畴论的解释开始一直到它在JavaScript里的实现。函数

相关文章
相关标签/搜索