FP in Scala(一):λ-演算 Part III:抽象数据
在前两篇文章中,我们在λ-Calculus的定义下,了解了Primitive Procedure(”+,-,*,/, <, >,||, &&, if else“) 以及在此基础上组合出来的Compound Procedure,即函数(包括一阶和高阶)。Compound Procedure提升了Procedure的抽象级别,增加了编程的模块化,扩展了函数式语言的表达能力。而同时,从Data的角度来看,我们之前所使用的数据都是Primitive Data(int,float,boolean等),能否将Primitive Data抽象成Compound Data(即用c语言里的结构体来理解,只有数据,没有函数),从而从数据角度提高函数式语言的表达能力呢?



FP in Scala(一):λ-演算 Part II:高阶函数和柯里化
我们在讨论Currying的时候,究竟在讨论什么?



FP in Scala(一):λ-演算 Part I:表达式,函数和赋值
函数式编程(Functional Programming)和命令式编程属于两种截然不同的编程范式。前者数据围绕函数,后者函数围绕数据,并且对于函数副作用也有不同的要求。函数式编程将函数真正上升到和数据一样的一等公民。可是如何将函数式编程结合到OOP(面向对象编程)来抽象出更高级的语言呢(而不是命令式一个指令接着一个指令)?Scala正是为解决如何有效结合函数式编程和OOP编程而诞生的。我们跟随Martin Odersky(Scala的作者)在Coursera上的课程《Functional Programming Principles in Scala》一起学习函数式编程。



A1:LeetCode笔记
LeetCode笔记。



Algorithm(六):Context Part III:递归
递归是算法中影响极其深远的一种思想,所以另开一篇文章谈谈递归。



Algorithm(六):Context Part II:Reductions
图是重要的一种数据结构,能巧妙优雅地解决许多其他数据结构和算法不能解决的问题。



Algorithm(六):Context Part I:Maximium Flow
图是重要的一种数据结构,能巧妙优雅地解决许多其他数据结构和算法不能解决的问题。



Algorithm(五):String Part III:数据压缩
图是重要的一种数据结构,能巧妙优雅地解决许多其他数据结构和算法不能解决的问题。



Algorithm(五):String Part II:Searching
图是重要的一种数据结构,能巧妙优雅地解决许多其他数据结构和算法不能解决的问题。



Algorithm(五):String Part I:Sorting
String Sorting的下限是否可以比第二章的通过比较的Sorting的O(NlogN)做的更好,又是String的什么特质导致这种不同呢。