随笔分类 -  functional-programming

Product and Sum in Category Theory
摘要:Product type guarantees that if you have a function of type Y -> X1 and a function of type Y -> X2, you must have a unique function of type Y -> X1 x X2 satisfying the property. Sum type guarantees that if you have a unique function of type X1 -> Y and a function of type X2 -> Y, you must have a function of type X1 ∐ X2 -> Y satisfying the property. 阅读全文

posted @ 2017-12-04 07:32 Todd Wei 阅读(947) 评论(0) 推荐(0) 编辑

Functional Programming without Lambda - Part 2 Lifting, Functor, Monad
摘要:fmap :: (T -> R) -> Functor<T> -> Functor<R> lifts a function of type T -> R into a function of type Functor<T> -> Functor<R>; flatMap :: (T -> Monad<R>) -> Monad<T> -> Monad<R> lifts a function of type T -> Monad<R> into a function of type Monad<T> -> Monad<R>. 阅读全文

posted @ 2015-05-30 12:47 Todd Wei 阅读(2239) 评论(0) 推荐(0) 编辑

类型的本质和函数式实现
摘要:类型的本质在于它所定义的操作以及操作之间的不变式。类型的实现关键在于满足类型规范的要求,而具体实现是可以变化的,使用者和测试用例都应该只依赖于类型规范而不依赖于具体实现。函数式的类型实现往往和类型规范是直接对应的,简单通用且容易验证程序的正确性,但可能有性能问题,而命令式的类型实现往往会引入复杂的内部数据结构和算法,不具有通用性但是一般比较高效。这两种实现并不是完全互斥的,有时候可以将二者相结合达到简单与高效的结合。 阅读全文

posted @ 2013-07-21 18:52 Todd Wei 阅读(3201) 评论(3) 推荐(3) 编辑

闭包和对象的关系
摘要:本文探讨了闭包(Closure)的概念与应用,比较了闭包形式与class形式的异同,并提出了在C#3.0中通过闭包创建对象的闭包工厂模式(Closure Factory Pattern)。 阅读全文

posted @ 2010-11-01 08:56 Todd Wei 阅读(5561) 评论(13) 推荐(4) 编辑

对象和流
摘要:人们常常看着照片回忆起从前,清晰地感觉到童年,青年,中年,老年一路走来的各种变化。从这种变化中,我们可以抽象出3个关键词:对象、时间和状态。对象拥有状态和标识,在标识不变的情况下,状态随时间发展演变。这代表了一种动态的世界观:时间本身并不属于世界,世界是在时间维度上不断演变的状态。在这种世界观的指导下,通过计算机程序模拟现实世界问题时,我们用计算机中的对象状态表示世界的状态,用计算机中对象的状态的变化表示世界状态的变化和时间进程。与上面动态的世界观不同,另一种世界观认为世界本质上是静止的。怎么理解呢?比如:一个历史人物,在他生活的每一天里都有变化,从这个角度看是状态的变化;但是如果纵观他的一生 阅读全文

posted @ 2010-08-22 13:26 Todd Wei 阅读(2646) 评论(4) 推荐(3) 编辑