几何尺寸与公差论坛

 找回密码
 注册
查看: 1940|回复: 2

【转帖】晒晒你手中的书

[复制链接]
发表于 2009-9-22 19:36:32 | 显示全部楼层 |阅读模式
 楼主| 发表于 2009-9-22 19:44:31 | 显示全部楼层

回复: 【转帖】晒晒你手中的书

有本书叫The Lambda Calculus: It's Syntax and Semantics, by Barendregt. 据说是经典之作,type-free lambda calculus之百科书。

这是Amazon的网页,http://www.amazon.com/Lambda-Cal ... 80077929&sr=8-1

这本书已经绝版,但是网上有:http://www.andrew.cmu.edu/user/cebrown/notes/barendregt.html

我现在感兴趣的倒是typed lambda calculus,正在看这本书:Foundations of Object-Oriented Languages, Types and Semantics, by Kim B. Bruce.

第二部分是讲Lambda Calculus的,

Part II Foundations: The Lambda Calculus
Chapter 8. Formal Language Descriptions and the Lambda Calculus
Chapter 9. The Polymorphic Lambda Calculus.

这本书写的通俗易懂,没有扯到Category Theory。

电子版有,可以找来看看。
 楼主| 发表于 2009-9-22 19:44:59 | 显示全部楼层

回复: 【转帖】晒晒你手中的书

lambda算子简介1.a
接着前两天的转载继续写。上次说到lambda算子的函数只接受一个参数。那怎么处理多个参数呢?如果只有一个参数,那岂不是连加法都不能实现?这当然难不倒像丘齐这样的天才。于是, lo and behold,  一个我们至今在编程里常用的技巧粉墨登场:

Currying
据说Currying翻译为局部套用函数,也不知真假。喜欢吃印度美食的老大们不要激动。Currying和咖喱没有半点关系。这个技巧以逻辑学家Haskell Curry的姓命名。Haskell Curry也是名动一时的人物。他和Moses Schönfinkel 共创了组合逻辑(combinatory logic),并把这们学科发扬光大。当初Curry搞出组合逻辑,主要是为了在数理逻辑里避免使用变量。后来搞函数编程的人们发现,组合逻辑是一类函数编程语言的理论基础。一些函数语言里常见的特性,比如说高阶函数合lazy evaluation, 就是用组合逻辑里的combinator实现的。当初Alanzo Church对这个理论也相当熟悉。难说lambda理论不是受了组合逻辑的影响。大牛Philip Wadler为了纪念Curry, 把他的函数语言叫做Haskell。Haskell也是一门巨酷的函数语言,兼顾数学的优美和软件开发的实用性。连LInspire的开发组都决定用Haskell作为系统开发的语言(但我很奇怪他们为什么放弃使用另一门酷酷的函数语言Ocaml)。说远了。

解决参数限制的关键在于认识到函数也是数据(用更严格的说法,是值)。既然是数据,就可以传来传去。如果有两个参数,我们可以写一个接受第一个参数的函数,而这个函数返回的是接受第二个参数的函数。“就那么简单!我们在JavaScript里不是常用这个功能?” 嘻嘻,我们在JavaScript里的确常用这个功能。JavaScript其实是带C句法的函数语言,支持高阶函数,自然支持Currying。JavaScript的功能其实颇为强大,不然Douglas Crockford不会说JavaScript是最被人误解的语言。

举例来说,假设我们要写一个函数,把x和y相加。最自然的写法是lambda x y . plus x y.  既然我们只能一次接受一个参数,我们可以先写一个接受 x 的函数。这个函数返回一个接受 y 的函数。这个被返回的函数把 x 和 y 相加:lambda x.(lambda y. plus x y)。简单吧?数学奇妙之处就在于我们用极为简单的砖块搭建出恢弘的宫殿。事实上,数学家们总是极力追求理论基础的简洁。他们不知疲倦地挥舞着奥卡姆剃刀,直到把自己的理论切割成东家之子:增之一分则太长,减之一分则太短。有了Currying这个工具,我们可以放心使用多参数的标记了。反正多参数的lambda不过是单参数lambda的方便用法而已,没有任何实质上的改变。

(待续。累死了。什么时候才能写到让人拍案叫绝的Y Combinator啊?


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/g9yuayon/archive/2006/05/29/759778.aspx
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|几何尺寸与公差论坛

GMT+8, 2024-5-5 22:44 , Processed in 0.037348 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表