哨兵

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2014年11月8日

摘要:开篇学了几个月的Android开发,动手做了一个简单的拼图小游戏,没有使用游戏框架,名字也纯属娱乐,比较粗糙请大家一笑别骂。游戏界面是一张图片切割的6*6的小图片,并将其中一块拿走,玩家通过不同的操作将所有小图片归到正确的位置便算过关,玩家可以进行的操作有空位所在行和列的小图片都可以左右上下移动,如... 阅读全文
posted @ 2014-11-08 14:18 哨兵 阅读(1158) 评论(1) 推荐(1) 编辑

2016年6月27日

摘要:本系列是在学习Monad时在网上找到的一个老外的博客,作者是MikeHadlow,地址是mikehadlow.blogspot.com, 可惜国内访问不了.这个系列对Monad讲解的浅显易懂,而且有实例代码,认真读完后基本了解Monad是怎么回事,因此花了几天将其翻译出来留存,翻译过程基本直译,去掉 阅读全文
posted @ 2016-06-27 23:45 哨兵 阅读(216) 评论(0) 推荐(0) 编辑

摘要:还记得我们上一篇delegate类型的parser吗 ,在开始本篇之前,强烈建议你复习一下这个parser定义 public delegate Maybe>Parser(string input) 还记得我们组合这些parser的不易吗?现在我们采用新的方式将parser转换为Monad, 我们已经知道了如何将泛型类和泛型接口转换成Monad, 同样的也可以将委托转换成Mona... 阅读全文
posted @ 2016-06-27 23:40 哨兵 阅读(304) 评论(0) 推荐(0) 编辑

摘要:我们已经学习了怎样创建一个简单的Monad, MaybeMonad, 并且知道了它如何通过在 Bind函数里封装处理空值的逻辑来移除样板式代码. 正如之前所说的,我们可以在Bind函数中封装更复杂的逻辑. 下面给出一个更复杂更典型的Monad例子,一个解析器Monad. 在本篇将要介绍一个解析器,在之后的篇幅里将会把解析器转换成一个 Monad. 首先我们思考解析器... 阅读全文
posted @ 2016-06-27 23:37 哨兵 阅读(379) 评论(0) 推荐(0) 编辑

摘要:在上一篇, 我们创建了第一个Monad,Indentity, 它可能是最简单的Monad, 使我们可以快速了解Monad的模式,而不用陷入细节。接下来我们创建一个有用的Monad, Maybe Monad. 如你所知,任何引用类型如果没有指向实际的对象,它的值就是null, 空引用经常导致一些问题。在无法返回一个实例时 null通常被用作method的返回值. ... 阅读全文
posted @ 2016-06-27 23:33 哨兵 阅读(513) 评论(0) 推荐(0) 编辑

摘要:在上一篇创建了我们的第一个Monad, Identity. 我们确定了类型要变成Monad, 它必须有一个type constructor(Identity), 和两个方法,Bind与ToIdentity //a function Bind, allows us to compose Identity returning functions public static Identity Bi... 阅读全文
posted @ 2016-06-27 23:30 哨兵 阅读(272) 评论(0) 推荐(0) 编辑

摘要:上一篇中介绍了如何使用amplified type, 如IEnumerable,如果我们能找到组合amplified type函数的方法,就会更容易写出强大的程序. 我们已经说了很多次函数组合, 听起来又干又硬。函数组合其实就是简单编程,当我们写像下面这样的代码时: var customer=customerData.GetById(customerId); var order... 阅读全文
posted @ 2016-06-27 23:27 哨兵 阅读(331) 评论(0) 推荐(0) 编辑

摘要:Monad是非常强有力的概念,在介绍Monad是什么和如何工作的之前,我们应该先确认Monad能解决什么问题。Monad是各种编程问题的的 meta solution,它不是某种特定问题的解决方案,我们将通过一些例子来介绍Monad. Monad是使用amplified type组合函数的模式,ampified type可以看做是带一个泛型参数的泛型类型. IEnu... 阅读全文
posted @ 2016-06-27 23:22 哨兵 阅读(281) 评论(0) 推荐(0) 编辑

2016年5月3日

摘要:本文引自:http://www.ibm.com/developerworks/cn/java/j-lo-compose/ Ward Cunningham 曾经说过,干净的代码清晰地表达了代码编写者所想要表达的东西,而优美的代码则更进一步,优美的代码看起来就像是专门为了要解决的问题而存在的。在本文中,我们将展示一个组合式解析器的设计、实现过程,最终的代码是优美的,极具扩展性,就像是为了解析特定的语法... 阅读全文
posted @ 2016-05-03 21:18 哨兵 阅读(983) 评论(0) 推荐(0) 编辑

2016年4月16日

摘要:任意正则表达式都存在一个与之对应的NFA,反之亦然. 正则表达式 ((A*B|AC)D)对应的NFA(有向图), 其中红线对应的为该状态的ε转换, 黑线表示匹配转换 我们定义的NFA具有以下特点: 正则表达式中的每个字符在NFA中都有且只有一个对应状态,NFA的其实状态为0,并包含一个虚拟的接收状态 阅读全文
posted @ 2016-04-16 20:20 哨兵 阅读(254) 评论(0) 推荐(0) 编辑

摘要:设R={r1,r2,r3....rn}是要进行排列的n个元素,, Ri=R-{ri} . 集合X中元素的全排列记为Perm(X). (ri)Perm(x)表示在全排列Perm(X)的每一个排列前加上前缀ri得到的排列,R的全排列可归纳定义为: 当n=1时,Perm(R)={r},其中r是集合R中唯一 阅读全文
posted @ 2016-04-16 20:15 哨兵 阅读(585) 评论(0) 推荐(0) 编辑