很难对如此广泛的问题做出完全回答。下面,我尝试提供一些见解,但是我不能仅用几段话描述这些广泛的主题。 λ演算是任何函数式编程语言的数学核心。它可以被看作是一个非常简约的编程语言,在不受重负语法干扰的情况下,可以研究FP的关键特性。 任何程序员,特别是FP程序员,都应该能够在几个小时的学习中学会λ演算的基础知识。请注意,即使基础知识相当简单,底层理论也非常广泛:有大量的科学文献专门研究λ演算。人们并不需要为日常FP了解所有这些内容,但不时阅读一些结果可以提供一些FP方面的见解。例如,阅读关于Church编码的内容可以让人意识到λ抽象有多么强大。 范畴论是数学中最抽象的部分之一。与λ演算相比,它要难得多。它可能非常具有挑战性。 CT通常与lambda演算相关联,因为它提供了一种理解类型的好方法。FP中的类型具有基础代数结构,最好通过范畴学来理解。例如,在Haskell中,类型(A,Either B C)和Either(A,B)(A,C)是同构的(至少忽略底部;因为a*(b+c)=(a*b)+(a*c)),大致意味着它们携带相同数量的信息。作为另一个示例,柯里化和反柯里化构成笛卡尔闭范畴的基本思想,这是解释简单类型的“标准”方式。 如果您具有程序员的背景,可以尝试Bartosz Milewski的在线书籍 Category Theory for Programmers。但我建议先从学习FP和lambda演算开始。