前言 Swift 其实比 Objective-C 复杂很多,相对于出生于上世纪 80 年代的 Objective-C 来说,Swift 融入了大量新特性。这也使得我们学习掌握这门语言变得相对来说更加困难。不过一切都是值得的,Swift 相比 Objective-C,写出来的程序更安全、更简洁,最终能 ...
分类:
移动开发 时间:
2016-07-08 17:50:30
阅读次数:
240
以前在使用stl的过程中发现bind1st和bind2nd这两个函数,当时不太理解什么意思,今天在网上查了一下相关资料发现竟然很简单,下面我就具体解释一下他们的用法。 bind1st和bind2nd函数用于将一个二元算子(binary functor,bf)转换成一元算子(unary functor ...
分类:
其他好文 时间:
2016-06-15 22:23:47
阅读次数:
154
(一)用仿函数实现大堆小堆堆数据结构是一种数组对象,它可以被视为一棵完全二叉树结构。堆结构的二叉树存储是最大堆:每个父节点的都大于孩子节点。最小堆:每个父节点的都小于孩子节点。仿函数(functor),就是使一个类的使用看上去象一个函数。其实现就是类中实现一个operat..
分类:
其他好文 时间:
2016-05-13 05:19:40
阅读次数:
179
在上一篇讨论里我在设计示范例子时遇到了一些麻烦。由于Free Monad可能是一种主流的FP编程规范,所以在进入实质编程之前必须把所有东西都搞清楚。前面遇到的问题主要与scalaz Free的FreeC类型有关系。这个类型主要是针对一些非Functor的F[A]特别设计的。FreeC是Coyoned ...
分类:
其他好文 时间:
2016-04-26 14:03:21
阅读次数:
109
内容整理自国外C++教材 先考虑一个简单的例子:假设有一个vector<string>,你的任务是统计长度小于5的string的个数,如果使用count_if函数的话,你的代码可能长成这样: 其中count_if函数的第三个参数是一个函数指针,返回一个bool类型的值。一般的,如果需要将特定的阈值长 ...
分类:
编程语言 时间:
2016-04-02 12:07:59
阅读次数:
175
自函子自函子(Endofunctor)是一个将范畴映射到自身的函子(A functor that maps a category to itself)。函子是将一个范畴转换到另一个范畴,所以自函子是一种特殊的函子。
由三部分组成:
一组元素对象
一组态射
态射组合(二元运算)
如果这个范畴满足结合律,那么它是一个半群;如果半群满足幺元(单位元,identity),那么它是幺...
分类:
其他好文 时间:
2016-03-01 13:02:17
阅读次数:
266
简单地说,函数对象就是一个重载了()运算符的类实例,它可以像一个函数一样使用。 #include <iostream> using namespace std; class Add { public: int operator ()(const int &a, const int &b) { ret
分类:
其他好文 时间:
2016-02-08 17:26:37
阅读次数:
299
Monad Reader就是一种函数的组合。在scalaz里函数(function)本身就是Monad,自然也就是Functor和applicative。我们可以用Monadic方法进行函数组合: 1 import scalaz._ 2 import Scalaz._ 3 object decom....
分类:
编程语言 时间:
2015-11-25 22:26:16
阅读次数:
354
I thought it would be easy and convenient to define a small functor and perform a customized sort on some objects I have. However, I can't seem to get...
分类:
其他好文 时间:
2015-10-27 13:20:03
阅读次数:
195
1.引言 bind1st和bind2nd函数用于将一个二元算子(binary functor,bf)转换成一元算子(unary functor,uf)。为了达到这个目的,它们需要两个参数:要转换的bf和一个值(v)。可能这么解释以后大家还不是很清楚,那么就说点白话吧。我们在做比较的时候所写的表达式....
分类:
其他好文 时间:
2015-08-17 18:50:30
阅读次数:
112