会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
雪川大虫
Scala泛函编程实践之路
博客园
首页
新随笔
联系
管理
订阅
上一页
1
···
18
19
20
21
22
23
24
25
26
···
29
下一页
2016年3月12日
Scalaz(31)- Free :自由数据结构-算式和算法的关注分离
摘要: 我们可以通过自由数据结构(Free Structure)实现对程序的算式和算法分离关注(separation of concern)。算式(Abstract Syntax Tree, AST)即运算表达式,是对程序功能的描述。算法则是程序的具体运算方式(Interpreter),它赋予了算式意
阅读全文
posted @ 2016-03-12 21:30 雪川大虫
阅读(739)
评论(0)
推荐(0)
2016年3月11日
Scalaz(30)- Free :Natural Tranformation ~> - map higher kinded types for free
摘要: 当我们需要定义一些对应高阶类型进行相互类型转换的操作函数时,我们发现scala语言并不提供能定义这种函数的支持。举例来说:如果我们希望定义一个函数把对于任何T值的Option[T]转换成List[T]的话,我们可能这样定义: 1 def toList[T](opt: Option[T]): List
阅读全文
posted @ 2016-03-11 14:47 雪川大虫
阅读(412)
评论(0)
推荐(0)
Scalaz(29)- Free :Coyoneda - Functor for free
摘要: 很多时候我们会遇到一些高阶类型F[_],但又无法实现它的map函数,也就是虽然形似但F不可能成为Functor。看看下面的例子: trait Interact[A] case class Ask(prompt: String) extends Interact[String] case class
阅读全文
posted @ 2016-03-11 07:55 雪川大虫
阅读(546)
评论(0)
推荐(0)
2016年2月29日
Scalaz(28)- ST Monad :FP方式适用变量
摘要: 函数式编程模式强调纯代码(pure code),主要实现方式是使用不可变数据结构,目的是函数组合(composability)最终实现函数组件的重复使用。但是,如果我们在一个函数p内部使用了可变量(mutable variables),如果函数的输入参数e是纯代码,那么表达式p(e)同样是纯代码的,
阅读全文
posted @ 2016-02-29 08:12 雪川大虫
阅读(641)
评论(0)
推荐(0)
2016年2月23日
Scalaz(27)- Inference & Unapply :类型的推导和匹配
摘要: 经过一段时间的摸索,用scala进行函数式编程的过程对我来说就好像是想着法儿如何将函数的款式对齐以及如何正确地匹配类型,真正是一种全新的体验,但好像有点太偏重学术型了。 本来不想花什么功夫在scala的类型系统上,但在阅读scalaz源代码时往往遇到类型层面的编程(type level progra
阅读全文
posted @ 2016-02-23 21:04 雪川大虫
阅读(905)
评论(0)
推荐(1)
2016年1月30日
Scalaz(26)- Lens: 函数式不可变对象数据操作方式
摘要: scala中的case class是一种特殊的对象:由编译器(compiler)自动生成字段的getter和setter。如下面的例子: 这里我们可以看到:Person是个多层次对象,包含多层嵌入属性对象(multi-layer embeded objects)。如果需要更改Person类型实例中的
阅读全文
posted @ 2016-01-30 11:53 雪川大虫
阅读(1168)
评论(0)
推荐(0)
2016年1月20日
Scalaz(25)- Monad: Monad Transformer-叠加Monad效果
摘要: 中间插播了几篇scalaz数据类型,现在又要回到Monad专题。因为FP的特征就是Monad式编程(Monadic programming),所以必须充分理解认识Monad、熟练掌握Monad运用。曾经看到一段对Monad的描述:“Monadic for-comprehension就是一种嵌入式编...
阅读全文
posted @ 2016-01-20 08:43 雪川大虫
阅读(1075)
评论(0)
推荐(0)
2016年1月8日
Scalaz(24)- 泛函数据结构: Tree-数据游览及维护
摘要: 上节我们讨论了Zipper-串形不可变集合(immutable sequential collection)游标,在串形集合中左右游走及元素维护操作。这篇我们谈谈Tree。在电子商务应用中对于xml,json等格式文件的处理要求非常之普遍,scalaz提供了Tree数据类型及相关的游览及操作函数能...
阅读全文
posted @ 2016-01-08 08:28 雪川大虫
阅读(1015)
评论(0)
推荐(1)
2016年1月6日
Scalaz(23)- 泛函数据结构: Zipper-游标定位
摘要: 外面沙尘滚滚一直向北去了,意识到年关到了,码农们都回乡过年去了,而我却留在这里玩弄“拉链”。不要想歪了,我说的不是裤裆拉链而是scalaz Zipper,一种泛函数据结构游标(cursor)。在函数式编程模式里的集合通常是不可变的(immutable collection),我们会发现在FP编程过...
阅读全文
posted @ 2016-01-06 21:28 雪川大虫
阅读(993)
评论(0)
推荐(1)
2015年12月30日
Scalaz(22)- 泛函编程思维: Coerce Monadic Thinking
摘要: 马上进入新的一年2016了,来点轻松点的内容吧。前面写过一篇关于用Reader实现依赖注入管理的博文(Scalaz(16)- Monad:依赖注入-Dependency Injection By Reader Monad)。刚好年底这几天抽空重审了一遍,这时才真正认识到让一个老资格OOP程序猿去编...
阅读全文
posted @ 2015-12-30 09:04 雪川大虫
阅读(776)
评论(2)
推荐(1)
上一页
1
···
18
19
20
21
22
23
24
25
26
···
29
下一页
公告