- 博客(5)
- 收藏
- 关注
原创 Scalaz(11)- Monad:你存在的意义
前面提到了scalaz是个函数式编程(FP)工具库。它提供了许多新的数据类型、拓展的标准类型及完整的一套typeclass来支持scala语言的函数式编程模式。我们知道:对于任何类型,我们只需要实现这个类型的typeclass实例就可以在对这个类型施用所对应typeclass提供的所有组件函数了(combinator)。突然之间我们的焦点好像都放在了如何获取typeclass实例上了,从而忽略了详
2015-10-28 13:46:16 648
原创 Scalaz(10)- Monad:就是一种函数式编程模式-a design pattern
Monad typeclass不是一种类型,而是一种程序设计模式(design pattern),是泛函编程中最重要的编程方式,因而很多行内人把FP又称为Monadic Programming。这其中代表的重要性不言而喻。Scalaz是通过Monad typeclass为数据运算的程序提供了一套规范的编程方式,如著名的for-comprehension。而不同类型的Monad实例则会支持不同的程序
2015-10-20 06:26:58 936
原创 Scalaz(9)- typeclass:checking instance abiding the laws
在前几篇关于Functor和Applilcative typeclass的讨论中我们自定义了一个类型Configure,Configure类型的定义是这样的: case class Configure[+A](get: A) object Configure { implicit val configFunctor = new Functor[Configure] { d
2015-10-13 19:53:59 705
原创 Scalaz(8)- typeclass:Monoid and Foldable
Monoid是种最简单的typeclass类型。我们先看看scalaz的typeclass定义:scalaz/Monoid.scala trait Monoid[F] extends Semigroup[F] { self => //// /** The identity element for `append`. */ def zero: F ... Monoid trait
2015-10-09 21:36:13 570
原创 Scalaz(7)- typeclass:Applicative-idomatic function application
Applicative,正如它的名称所示,就是FP模式的函数施用(function application)。我们在前面的讨论中不断提到FP模式的操作一般都在管道里进行的,因为FP的变量表达形式是这样的:F[A],即变量A是包嵌在F结构里的。Scalaz的Applicative typeclass提供了各种类型的函数施用(function application)和升格(lifting)方法。与其
2015-10-05 11:47:52 600
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人