随笔分类 -  Cats

Scala泛函组件库
摘要:scala中的Option类型是个很好用的数据结构,用None来替代java的null可以大大降低代码的复杂性,它还是一个更容易解释的状态表达形式,比如在读取数据时我们用Some(Row)来代表读取的数据行Row,用None来代表没有读到任何数据,免去了null判断。由此我们可以对数据库操作的结果有 阅读全文
posted @ 2018-09-28 12:17 雪川大虫 阅读(496) 评论(0) 推荐(0) 编辑
摘要:在对上一次3月份的scala-meetup里我曾分享了关于Future在函数组合中的问题及如何用Monix.Task来替代。具体分析可以查阅这篇博文。在上篇示范里我们使用了Future来实现某种non-blocking数据库操作,现在可以用Task替换Future部分: Task是一个真正的Mona 阅读全文
posted @ 2018-09-21 10:02 雪川大虫 阅读(598) 评论(0) 推荐(1) 编辑
摘要:在上一篇博文里我们介绍了通过gRPC实现JDBC数据库的streaming,这篇我们介绍关于cassandra的streaming实现方式。如果我们需要从一个未部署cassandra的节点或终端上读取cassandra数据,可以用gRPC来搭建一个数据桥梁来连接这两端。这时cassandra这端就是 阅读全文
posted @ 2018-06-30 09:41 雪川大虫 阅读(828) 评论(0) 推荐(0) 编辑
摘要:大数据、多核CPU驱动了函数式编程模式的兴起。因为函数式编程更适合多线程、复杂、安全的大型软件编程。但是,对许多有应用软件开发经验的编程者来说,函数式编程模式是一种全新的、甚至抽象的概念,可能需要很长时间的学习、积累才能完全掌握和适应。对一些不算FP编程专家的人来说,如何用他们习惯的方式来使用现成的 阅读全文
posted @ 2016-12-20 09:56 雪川大虫 阅读(542) 评论(0) 推荐(0) 编辑
摘要:在前面的几篇关于Free编程的讨论示范中我们均使用了基础类型的运算结果。但在实际应用中因为需要考虑运算中出现异常的情况,常常会需要到更高阶复杂的运算结果类型如Option、Xor等。因为Monad无法实现组合(monad do not compose),我们如何在for-comprehension中 阅读全文
posted @ 2016-09-13 09:03 雪川大虫 阅读(792) 评论(0) 推荐(0) 编辑
摘要:在上一节我们讨论了通过Coproduct来实现DSL组合:用一些功能简单的基础DSL组合成符合大型多复杂功能应用的DSL。但是我们发现:cats在处理多层递归Coproduct结构时会出现编译问题。再就是Free编程是一个繁复的工作,容易出错,造成编程效率的低下。由于Free编程目前是函数式编程的主 阅读全文
posted @ 2016-09-09 08:10 雪川大虫 阅读(822) 评论(0) 推荐(0) 编辑
摘要:上篇我们介绍了Free类型可以作为一种嵌入式编程语言DSL在函数式编程中对某种特定功能需求进行描述。一个完整的应用可能会涉及多样的关联功能,但如果我们为每个应用都设计一套DSL的话,那么在我们的函数式编程中将会不断重复的功能相似的DSL。我们应该秉承函数式编程的核心思想:函数组合(compositi 阅读全文
posted @ 2016-09-08 09:21 雪川大虫 阅读(856) 评论(0) 推荐(2) 编辑
摘要:cats是scala的一个新的函数式编程工具库,其设计原理基本继承了scalaz:大家都是haskell typeclass的scala版实现。当然,cats在scalaz的基础上从实现细节、库组织结构和调用方式上进行了一些优化,所以对用户来说:cats的基础数据类型、数据结构在功能上与scalaz 阅读全文
posted @ 2016-09-06 10:01 雪川大虫 阅读(2349) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示