12 2015 档案

摘要:马上进入新的一年2016了,来点轻松点的内容吧。前面写过一篇关于用Reader实现依赖注入管理的博文(Scalaz(16)- Monad:依赖注入-Dependency Injection By Reader Monad)。刚好年底这几天抽空重审了一遍,这时才真正认识到让一个老资格OOP程序猿去编... 阅读全文
posted @ 2015-12-30 09:04 雪川大虫 阅读(767) 评论(2) 推荐(1) 编辑
摘要:Leskov,Leibniz,别扭的名字,是什么地干活?碰巧从scalaz源代码里发现了这么个东西:scalaz/BindSyntax.scala/** Wraps a value `self` and provides methods related to `Bind` */final clas... 阅读全文
posted @ 2015-12-29 08:55 雪川大虫 阅读(754) 评论(0) 推荐(2) 编辑
摘要:scalaz还提供了个type class叫Validation。乍看起来跟\/没什么分别。实际上这个Validation是在\/的基础上增加了Applicative功能,就是实现了ap函数。通过Applicative实例就可以同时运算多个Validation并返回多条异常信息。所以,\/与Val... 阅读全文
posted @ 2015-12-17 18:14 雪川大虫 阅读(749) 评论(0) 推荐(0) 编辑
摘要:scala标准库提供了一个Either类型,它可以说是Option的升级版。与Option相同,Either也有两种状态:Left和Right,分别对应Option的None和Some,不同的是Left可以返回一个值。我们通常用这个值来表述异常信息。scalaz也提供了自己版本的Either,并用... 阅读全文
posted @ 2015-12-17 13:24 雪川大虫 阅读(956) 评论(0) 推荐(2) 编辑
摘要:说道FP,我们马上会联想到Monad。我们说过Monad的代表函数flatMap可以把两个运算F[A],F[B]连续起来,这样就可以从程序的意义上形成一种串型的流程(workflow)。更直白的讲法是:任何类型只要实现了flatMap就可以用for-comprehension, for{...}y... 阅读全文
posted @ 2015-12-15 17:48 雪川大虫 阅读(1044) 评论(0) 推荐(0) 编辑
摘要:我们经常提到函数式编程就是F[T]。这个F可以被视为一种运算模式。我们是在F运算模式的壳子内对T进行计算。理论上来讲,函数式程序的运行状态也应该是在这个运算模式壳子内的,也是在F[]内更新的。那么我们就应该像函数式运算T值一样,也有一套函数式更新程序状态的方法。之前我们介绍了Writer Mona... 阅读全文
posted @ 2015-12-11 10:59 雪川大虫 阅读(1370) 评论(0) 推荐(2) 编辑
摘要:在上一篇讨论里我们简单的介绍了一下Cake Pattern和Reader Monad是如何实现依赖注入的。主要还是从方法上示范了如何用Cake Pattern和Reader在编程过程中解析依赖和注入依赖。考虑到依赖注入模式在编程中的重要性和普遍性,觉着还需要再讨论的深入一些,使依赖注入模式在FP领... 阅读全文
posted @ 2015-12-04 11:50 雪川大虫 阅读(991) 评论(0) 推荐(1) 编辑

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