摘要: 前面提到了scalaz是个函数式编程(FP)工具库。它提供了许多新的数据类型、拓展的标准类型及完整的一套typeclass来支持scala语言的函数式编程模式。我们知道:对于任何类型,我们只需要实现这个类型的typeclass实例就可以在对这个类型施用所对应typeclass提供的所有组件函数了... 阅读全文
posted @ 2015-10-28 13:45 雪川大虫 阅读(2138) 评论(0) 推荐(3)
摘要: Monad typeclass不是一种类型,而是一种程序设计模式(design pattern),是泛函编程中最重要的编程概念,因而很多行内人把FP又称为Monadic Programming。这其中透露的Monad重要性则不言而喻。Scalaz是通过Monad typeclass为数据运算的程... 阅读全文
posted @ 2015-10-20 06:26 雪川大虫 阅读(3972) 评论(0) 推荐(2)
摘要: 在前几篇关于Functor和Applilcative typeclass的讨论中我们自定义了一个类型Configure,Configure类型的定义是这样的: 1 case class Configure[+A](get: A) 2 object Configure { 3 implici... 阅读全文
posted @ 2015-10-13 19:53 雪川大虫 阅读(646) 评论(1) 推荐(1)
摘要: Monoid是种最简单的typeclass类型。我们先看看scalaz的Monoid typeclass定义:scalaz/Monoid.scala1 trait Monoid[F] extends Semigroup[F] { self =>2 ////3 /** The identit... 阅读全文
posted @ 2015-10-09 21:14 雪川大虫 阅读(856) 评论(0) 推荐(1)
摘要: Applicative,正如它的名称所示,就是FP模式的函数施用(function application)。我们在前面的讨论中不断提到FP模式的操作一般都在管道里进行的,因为FP的变量表达形式是这样的:F[A],即变量A是包嵌在F结构里的。Scalaz的Applicative typeclas... 阅读全文
posted @ 2015-10-05 11:48 雪川大虫 阅读(1205) 评论(0) 推荐(1)
摘要: Functor是范畴学(Category theory)里的概念。不过无须担心,我们在scala FP编程里并不需要先掌握范畴学知识的。在scalaz里,Functor就是一个普通的typeclass,具备map over特性。我的理解中,Functor的主要用途是在FP过程中更新包嵌在容器(高阶... 阅读全文
posted @ 2015-09-26 12:38 雪川大虫 阅读(1432) 评论(0) 推荐(1)
摘要: 我们在上一篇讨论中介绍了一些基本的由scalaz提供的typeclass。这些基本typeclass主要的作用是通过操作符来保证类型安全,也就是在前期编译时就由compiler来发现错误。在这篇讨论中我希望能按照scalaz的格式设计自己的typeclass并能使之融入scalaz库结构里去。 我... 阅读全文
posted @ 2015-09-19 17:13 雪川大虫 阅读(1039) 评论(0) 推荐(1)
摘要: Scalaz是由一堆的typeclass组成。每一个typeclass具备自己特殊的功能。用户可以通过随意多态(ad-hoc polymorphism)把这些功能施用在自己定义的类型上。scala这个编程语言借鉴了纯函数编程语言Haskell的许多概念。typeclass这个名字就是从Haskel... 阅读全文
posted @ 2015-09-18 22:13 雪川大虫 阅读(1842) 评论(1) 推荐(2)
摘要: Scalaz是个通用的函数式编程组件库。它提供的类型、函数组件都必须具有高度的概括性才能同时支持不同数据类型的操作。可以说,scalaz提供了一整套所有编程人员都需要的具有高度概括性的通用函数,它是通过随意多态(ad-hoc polymorphism)来帮助用户使用这些函数的。随意多态就是trai... 阅读全文
posted @ 2015-09-09 20:53 雪川大虫 阅读(1957) 评论(1) 推荐(5)
摘要: scalaz功能基本上由以下三部分组成:1、新的数据类型,如:Validation, NonEmptyList ...2、标准scala类型的延伸类型,如:OptionOps, ListOps ...3、通过typeclass的随意多态(ad-hoc polymorphism)编程模式实现的大量概... 阅读全文
posted @ 2015-09-08 08:32 雪川大虫 阅读(2355) 评论(0) 推荐(2)