上一页 1 ··· 19 20 21 22 23 24 25 26 27 ··· 29 下一页
摘要: Leskov,Leibniz,别扭的名字,是什么地干活?碰巧从scalaz源代码里发现了这么个东西:scalaz/BindSyntax.scala/** Wraps a value `self` and provides methods related to `Bind` */final clas... 阅读全文
posted @ 2015-12-29 08:55 雪川大虫 阅读(763) 评论(0) 推荐(2)
摘要: scalaz还提供了个type class叫Validation。乍看起来跟\/没什么分别。实际上这个Validation是在\/的基础上增加了Applicative功能,就是实现了ap函数。通过Applicative实例就可以同时运算多个Validation并返回多条异常信息。所以,\/与Val... 阅读全文
posted @ 2015-12-17 18:14 雪川大虫 阅读(752) 评论(0) 推荐(0)
摘要: scala标准库提供了一个Either类型,它可以说是Option的升级版。与Option相同,Either也有两种状态:Left和Right,分别对应Option的None和Some,不同的是Left可以返回一个值。我们通常用这个值来表述异常信息。scalaz也提供了自己版本的Either,并用... 阅读全文
posted @ 2015-12-17 13:24 雪川大虫 阅读(968) 评论(0) 推荐(2)
摘要: 说道FP,我们马上会联想到Monad。我们说过Monad的代表函数flatMap可以把两个运算F[A],F[B]连续起来,这样就可以从程序的意义上形成一种串型的流程(workflow)。更直白的讲法是:任何类型只要实现了flatMap就可以用for-comprehension, for{...}y... 阅读全文
posted @ 2015-12-15 17:48 雪川大虫 阅读(1057) 评论(0) 推荐(0)
摘要: 我们经常提到函数式编程就是F[T]。这个F可以被视为一种运算模式。我们是在F运算模式的壳子内对T进行计算。理论上来讲,函数式程序的运行状态也应该是在这个运算模式壳子内的,也是在F[]内更新的。那么我们就应该像函数式运算T值一样,也有一套函数式更新程序状态的方法。之前我们介绍了Writer Mona... 阅读全文
posted @ 2015-12-11 10:59 雪川大虫 阅读(1400) 评论(0) 推荐(2)
摘要: 在上一篇讨论里我们简单的介绍了一下Cake Pattern和Reader Monad是如何实现依赖注入的。主要还是从方法上示范了如何用Cake Pattern和Reader在编程过程中解析依赖和注入依赖。考虑到依赖注入模式在编程中的重要性和普遍性,觉着还需要再讨论的深入一些,使依赖注入模式在FP领... 阅读全文
posted @ 2015-12-04 11:50 雪川大虫 阅读(1008) 评论(0) 推荐(1)
摘要: 我们可以用Monad Reader来实现依赖注入(dependency injection DI or IOC)功能。Scala界中比较常用的不附加任何Framework的依赖注入方式可以说是Cake Pattern了。现在通过Monad Reader可以实现同样功能,两者对比优点各有千秋。所谓依... 阅读全文
posted @ 2015-11-27 19:00 雪川大虫 阅读(1304) 评论(1) 推荐(3)
摘要: Monad Reader就是一种函数的组合。在scalaz里函数(function)本身就是Monad,自然也就是Functor和applicative。我们可以用Monadic方法进行函数组合: 1 import scalaz._ 2 import Scalaz._ 3 object decom... 阅读全文
posted @ 2015-11-25 21:12 雪川大虫 阅读(1543) 评论(0) 推荐(3)
摘要: 通过前面的几篇讨论我们了解到F[T]就是FP中运算的表达形式(representation of computation)。在这里F[]不仅仅是一种高阶类型,它还代表了一种运算协议(computationprotocol)或者称为运算模型好点,如IO[T],Option[T]。运算模型规范了运算值... 阅读全文
posted @ 2015-11-20 09:58 雪川大虫 阅读(964) 评论(0) 推荐(1)
摘要: 在前面的几篇讨论里我们初步对FP有了些少了解:FP嘛,不就是F[A]吗?也是,FP就是在F[]壳子(context)内对程序的状态进行更改,也就是在F壳子(context)内施用一些函数。再直白一点就是在F壳子内进行OOP惯用的行令编程(imperative programming)。当然,既然是... 阅读全文
posted @ 2015-11-13 19:05 雪川大虫 阅读(950) 评论(0) 推荐(1)
上一页 1 ··· 19 20 21 22 23 24 25 26 27 ··· 29 下一页