Justme0 的博客

撷英采华,以备不需

观《锵锵三人行》有感

这两天的《锵锵三人行》特别精彩,嘉宾是收藏家马未都和记者周轶君,加上主持人窦文涛,他们三个人探讨了现在的社会问题。事件是最近深圳市一个十几岁的自闭症小孩走丢了,走到东莞去了,中间经公安局、医院辗转送至韶关下面一个县的托养中心,最后在这个托养中心死了。问题是这个托养中心是民办的、盈利性的,政府管不了很多流浪者,以六百块钱一个人头让私人管,而这个托养中心的财务又与一个当地政府官员有关系。所以是政府为了公共事业出的钱最后到了政府中的私人口袋里。

首先,托养中心是民办的,这就会出问题,老板要赚钱,他对托养中心里弱势群体的救助政府很难监督到位,这个托养中心去年送到火葬场的就有两百多人,事件中的那个男孩就是这个情况,他的父亲说走丢时是130斤,最后是骨瘦如柴。

读书记录

正在读

读过

想读

(End)

函数式编程与 C++

这个学期学了一门函数式语言 Coq,是法国人发明的,它与 ML 很像,其实 Coq 的发明主要是受了 ML 的影响。Coq 的语法我就不在这叙述了,有兴趣的朋友可以看这本书 Software Foundations,也就是我们上课用的教材。下面直接看些例子吧。

1. map

它的功能与 C++ 中的std::transform算法类似,是将f作用在list中的每个元素(元素类型是X)上,返回一个list(元素类型是Y),其中f是一元函数,形参类型是X,返回值类型是Y。有一点得注意,这里的maplist与 STL 中的容器无关,因为 Coq 的源程序中是这么命名的,所以我就沿用了。

Fixpoint map {X Y:Type} (f:X->Y) (l:list X)
             : (list Y) :=
  match l with
  | []     => []
  | h :: t => (f h) :: (map f t)
  end.

我突发奇想,用 C++ 实现了上面的功能。程序如下。

C++ 中的 Lambda 表达式

前些天买了本《程序设计语言理论》,看了简介,Lambda 演算贯穿整个理论,尤其在函数式语言中具有重要作用。C++11 中也加入了 Lambda 表达式,下面做个总结。


1. 一个简单的例子

一个简单的 Lambda 表达式如下:

[] {};

这就定义了一个对象,这个对象匿名,再强调一下,Lambda 表达式是对象,不是类型。本例中,该对象的类型是 ‘anonymous-namespace’::<lambda0>,这是编译器给它设的一个类型名。

2. 实现

一般地,编译器实现 Lambda 表达式时,将其转化为函数对象(仿函数 functor)。比如上面的例子将转化为