会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
雪川大虫
Scala泛函编程实践之路
博客园
首页
新随笔
联系
管理
订阅
上一页
1
···
22
23
24
25
26
27
28
29
下一页
2015年6月18日
泛函编程(30)-泛函IO:Free Monad-Monad生产线
摘要: 在上节我们介绍了Trampoline。它主要是为了解决堆栈溢出(StackOverflow)错误而设计的。Trampoline类型是一种数据结构,它的设计思路是以heap换stack:对应传统递归算法运行时在堆栈上寄存程序状态,用Trampoline进行递归算法时程序状态是保存在Trampoli...
阅读全文
posted @ 2015-06-18 17:56 雪川大虫
阅读(1500)
评论(4)
推荐(1)
2015年6月10日
泛函编程(29)-泛函实用结构:Trampoline-不再怕StackOverflow
摘要: 泛函编程方式其中一个特点就是普遍地使用递归算法,而且有些地方还无法避免使用递归算法。比如说flatMap就是一种推进式的递归算法,没了它就无法使用for-comprehension,那么泛函编程也就无法被称为Monadic Programming了。虽然递归算法能使代码更简洁易明,但同时又以占用堆...
阅读全文
posted @ 2015-06-10 21:39 雪川大虫
阅读(2577)
评论(0)
推荐(4)
2015年6月2日
泛函编程(28)-粗俗浅解:Functor, Applicative, Monad
摘要: 经过了一段时间的泛函编程讨论,始终没能实实在在的明确到底泛函编程有什么区别和特点;我是指在现实编程的情况下所谓的泛函编程到底如何特别。我们已经习惯了传统的行令式编程(imperative programming),总是先入为主的认为软件编程就是一行接着一行的更改某些变量状态指令:明刀明枪,字里行...
阅读全文
posted @ 2015-06-02 15:55 雪川大虫
阅读(1508)
评论(0)
推荐(0)
2015年5月28日
泛函编程(27)-泛函编程模式-Monad Transformer
摘要: 经过了一段时间的学习,我们了解了一系列泛函数据类型。我们知道,在所有编程语言中,数据类型是支持软件编程的基础。同样,泛函数据类型Foldable,Monoid,Functor,Applicative,Traversable,Monad也是我们将来进入实际泛函编程的必需。在前面对这些数据类型的探讨...
阅读全文
posted @ 2015-05-28 23:25 雪川大虫
阅读(1459)
评论(0)
推荐(0)
2015年5月21日
泛函编程(26)-泛函数据类型-Monad-Applicative Functor Traversal
摘要: 前面我们讨论了Applicative。Applicative 就是某种Functor,因为我们可以用map2来实现map,所以Applicative可以map,就是Functor,叫做Applicative Functor。我们又说所有Monad都是Applicative,因为我们可以用flat...
阅读全文
posted @ 2015-05-21 19:27 雪川大虫
阅读(1123)
评论(0)
推荐(0)
2015年5月12日
泛函编程(25)-泛函数据类型-Monad-Applicative
摘要: 上两期我们讨论了Monad。我们说Monad是个最有概括性(抽象性)的泛函数据类型,它可以覆盖绝大多数数据类型。任何数据类型只要能实现flatMap+unit这组Monad最基本组件函数就可以变成Monad实例,就可以使用Monad组件库像for-comprehension这样特殊的、Monad...
阅读全文
posted @ 2015-05-12 16:52 雪川大虫
阅读(1106)
评论(1)
推荐(0)
2015年5月5日
泛函编程(24)-泛函数据类型-Monad, monadic programming
摘要: 在上一节我们介绍了Monad。我们知道Monad是一个高度概括的抽象模型。好像创造Monad的目的是为了抽取各种数据类型的共性组件函数汇集成一套组件库从而避免重复编码。这些能对什么是Monad提供一个明确的答案吗?我们先从上节设计的Monad组件库中的一些基本函数来加深一点对Monad的了解: ...
阅读全文
posted @ 2015-05-05 17:16 雪川大虫
阅读(1335)
评论(0)
推荐(0)
2015年4月27日
泛函编程(23)-泛函数据类型-Monad
摘要: 简单来说:Monad就是泛函编程中最概括通用的数据模型(高阶数据类型)。它不但涵盖了所有基础类型(primitive types)的泛函行为及操作,而且任何高阶类或者自定义类一旦具备Monad特性就可以与任何类型的Monad实例一样在泛函编程中共同提供一套通用的泛函编程方式。所以有人把泛函编程视...
阅读全文
posted @ 2015-04-27 23:48 雪川大虫
阅读(1488)
评论(1)
推荐(0)
2015年4月22日
泛函编程(22)-泛函数据类型-Monoid In Action
摘要: 在上一节我们讨论了Monoid的结合性和恒等值的作用以及Monoid如何与串类元素折叠算法相匹配。不过我们只示范了一下基础类型(primitive type)Monoid实例的应用,所以上一节的讨论目的是理论多于实践。在这一节我们将把重点放在一些实用综合类型(composite type)Mon...
阅读全文
posted @ 2015-04-22 17:08 雪川大虫
阅读(1440)
评论(0)
推荐(0)
2015年4月20日
泛函编程(21)-泛函数据类型-Monoid
摘要: Monoid是数学范畴理论(category theory)中的一个特殊范畴(category)。不过我并没有打算花时间从范畴理论的角度去介绍Monoid,而是希望从一个程序员的角度去分析Monoid以及它在泛函编程里的作用。从这个思路出发我们很自然得出Monoid就是一种数据类型,或者是一种在...
阅读全文
posted @ 2015-04-20 22:52 雪川大虫
阅读(2367)
评论(1)
推荐(0)
上一页
1
···
22
23
24
25
26
27
28
29
下一页
公告