会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
雪川大虫
Scala泛函编程实践之路
博客园
首页
新随笔
联系
管理
订阅
上一页
1
···
15
16
17
18
19
20
21
22
23
···
29
下一页
2016年9月8日
Cats(2)- Free语法组合,Coproduct-ADT composition
摘要: 上篇我们介绍了Free类型可以作为一种嵌入式编程语言DSL在函数式编程中对某种特定功能需求进行描述。一个完整的应用可能会涉及多样的关联功能,但如果我们为每个应用都设计一套DSL的话,那么在我们的函数式编程中将会不断重复的功能相似的DSL。我们应该秉承函数式编程的核心思想:函数组合(compositi
阅读全文
posted @ 2016-09-08 09:21 雪川大虫
阅读(859)
评论(0)
推荐(2)
2016年9月6日
Cats(1)- 从Free开始,Free cats
摘要: cats是scala的一个新的函数式编程工具库,其设计原理基本继承了scalaz:大家都是haskell typeclass的scala版实现。当然,cats在scalaz的基础上从实现细节、库组织结构和调用方式上进行了一些优化,所以对用户来说:cats的基础数据类型、数据结构在功能上与scalaz
阅读全文
posted @ 2016-09-06 10:01 雪川大虫
阅读(2381)
评论(0)
推荐(0)
2016年8月31日
Scalaz(59)- scalaz-stream: fs2-程序并行运算,fs2 running effects in parallel
摘要: scalaz-stream-fs2是一种函数式的数据流编程工具。fs2的类型款式是:Stream[F[_],O],F[_]代表一种运算模式,O代表Stream数据元素的类型。实际上F就是一种延迟运算机制:F中间包含的类型如F[A]的A是一个可能会产生副作用不纯代码(impure code)的运算结果
阅读全文
posted @ 2016-08-31 11:34 雪川大虫
阅读(689)
评论(0)
推荐(1)
2016年8月30日
Scalaz(58)- scalaz-stream: fs2-并行运算示范,fs2 parallel processing
摘要: 从表面上来看,Stream代表一连串无穷数据元素。一连串的意思是元素有固定的排列顺序,所以对元素的运算也必须按照顺序来:完成了前面的运算再跟着进行下一个元素的运算。这样来看,Stream应该不是很好的并行运算工具。但是,fs2所支持的并行运算方式不是以数据元素而是以Stream为运算单位的:fs2
阅读全文
posted @ 2016-08-30 07:59 雪川大虫
阅读(590)
评论(0)
推荐(0)
2016年8月27日
Scalaz(57)- scalaz-stream: fs2-多线程编程,fs2 concurrency
摘要: fs2的多线程编程模式不但提供了无阻碍I/O(java nio)能力,更为并行运算提供了良好的编程工具。在进入并行运算讨论前我们先示范一下fs2 pipe2对象里的一些Stream合并功能。我们先设计两个帮助函数(helper)来跟踪运算及模拟运算环境: log是个运算跟踪函数。 randomDel
阅读全文
posted @ 2016-08-27 14:11 雪川大虫
阅读(476)
评论(0)
推荐(0)
2016年8月25日
Scalaz(56)- scalaz-stream: fs2-安全运算,fs2 resource safety
摘要: fs2在处理异常及资源使用安全方面也有比较大的改善。fs2 Stream可以有几种方式自行引发异常:直接以函数式方式用fail来引发异常、在纯代码里隐式引发异常或者在运算中引发异常,举例如下: 我们可以用非函数式方式处理异常: 当然,我们会选择用纯代码方式处理异常: 我们在上一篇讨论中介绍过fs2提
阅读全文
posted @ 2016-08-25 10:49 雪川大虫
阅读(378)
评论(0)
推荐(0)
2016年8月24日
Scalaz(55)- scalaz-stream: fs2-基础介绍,fs2 stream transformation
摘要: fs2是scalaz-stream的最新版本,沿用了scalaz-stream被动式(pull model)数据流原理但采用了全新的实现方法。fs2比较scalaz-stream而言具备了:更精简的基础组件(combinator)、更安全的类型、资源使用(type safe, resource sa
阅读全文
posted @ 2016-08-24 10:04 雪川大虫
阅读(722)
评论(0)
推荐(0)
2016年8月19日
Scalaz(54)- scalaz-stream: 函数式多线程编程模式-Free Streaming Programming Model
摘要: 长久以来,函数式编程模式都被认为是一种学术研究用或教学实验用的编程模式。直到近几年由于大数据和多核CPU的兴起造成了函数式编程模式在一些实际大型应用中的出现,这才逐渐改变了人们对函数式编程无用论的观点。通过一段时间对函数式编程方法的学习,我们了解到Free Monad的算式/算法关注分离(separ
阅读全文
posted @ 2016-08-19 11:31 雪川大虫
阅读(771)
评论(0)
推荐(0)
2016年8月12日
Scalaz(53)- scalaz-stream: 程序运算器-application scenario
摘要: 从上面多篇的讨论中我们了解到scalaz-stream代表一串连续无穷的数据或者程序。对这个数据流的处理过程就是一个状态机器(state machine)的状态转变过程。这种模式与我们通常遇到的程序流程很相似:通过程序状态的变化来推进程序进展。传统OOP式编程可能是通过一些全局变量来记录当前程序状态
阅读全文
posted @ 2016-08-12 10:03 雪川大虫
阅读(458)
评论(0)
推荐(0)
2016年8月3日
Scalaz(52)- scalaz-stream: 并行运算-parallel processing concurrently by merging
摘要: 如果scalaz-stream真的是一个实用的数据流编程工具库的话,那它应该能处理同时从多个数据源获取数据以及把数据同时送到多个终点(Sink),最重要的是它应该可以实现高度灵活的多线程运算。但是:我们说Process代表了一串可能是无穷的元素。这个一串的意思是多个按序排列的元素。也就是说如果我们有
阅读全文
posted @ 2016-08-03 14:44 雪川大虫
阅读(437)
评论(0)
推荐(1)
上一页
1
···
15
16
17
18
19
20
21
22
23
···
29
下一页
公告