PPT标准模版

Similar documents
《C语言基础入门》课程教学大纲

说 明 为 了 反 映 教 运 行 的 基 本 状 态, 为 校 和 院 制 定 相 关 政 策 和 进 行 教 建 设 与 改 革 提 供 据 依 据, 校 从 程 资 源 ( 开 类 别 开 量 规 模 ) 教 师 结 构 程 考 核 等 维 度, 对 2015 年 春 季 期 教 运 行 基

一 公 共 卫 生 硕 士 专 业 学 位 论 文 的 概 述 学 位 论 文 是 对 研 究 生 进 行 科 学 研 究 或 承 担 专 门 技 术 工 作 的 全 面 训 练, 是 培 养 研 究 生 创 新 能 力, 综 合 运 用 所 学 知 识 发 现 问 题, 分 析 问 题 和 解 决

正 规 培 训 达 规 定 标 准 学 时 数, 并 取 得 结 业 证 书 二 级 可 编 程 师 ( 具 备 以 下 条 件 之 一 者 ) (1) 连 续 从 事 本 职 业 工 作 13 年 以 上 (2) 取 得 本 职 业 三 级 职 业 资 格 证 书 后, 连 续 从 事 本 职 业

一 开 放 性 的 政 策 与 法 规 二 两 岸 共 同 的 文 化 传 承 三 两 岸 高 校 各 自 具 有 专 业 优 势 远 见 杂 志 年 月 日

<4D F736F F D20BFC9B1E0B3CCD0F2BFD8D6C6CFB5CDB3C9E8BCC6CAA6B9FABCD2D6B0D2B5B1EAD7BC2E646F63>

2 熟 悉 Visual Basic 的 集 成 开 发 环 境 3 了 解 可 视 化 面 向 对 象 编 程 事 件 驱 动 交 互 式 开 发 等 基 本 概 念 4 了 解 Visual Basic 的 特 点 环 境 要 求 与 安 装 方 法 1 Visual Basic 开 发 应 用

采 取 行 动 的 机 会 90% 开 拓 成 功 的 道 路 2

定 位 和 描 述 : 程 序 设 计 / 办 公 软 件 高 级 应 用 级 考 核 内 容 包 括 计 算 机 语 言 与 基 础 程 序 设 计 能 力, 要 求 参 试 者 掌 握 一 门 计 算 机 语 言, 可 选 类 别 有 高 级 语 言 程 序 设 计 类 数 据 库 编 程 类


龚 亚 夫 在 重 新 思 考 基 础 教 育 英 语 教 学 的 理 念 一 文 中 援 引 的 观 点 认 为 当 跳 出 本 族 语 主 义 的 思 维 定 式 后 需 要 重 新 思 考 许 多 相 连 带 的 问 题 比 如 许 多 发 音 的 细 微 区 别 并 不 影 响 理 解 和

( ) 信 号 与 系 统 Ⅰ 学 科 基 础 必 修 课 教 周 2016 年 06 月 13 日 (08:00-09:35) ( )

2006年顺德区高中阶段学校招生录取分数线

第 期 李 伟 等 用 方 法 对 中 国 历 史 气 温 数 据 插 值 可 行 性 讨 论

<4D F736F F D D323630D6D0B9FAD3A6B6D4C6F8BAF2B1E4BBAFB5C4D5FEB2DFD3EBD0D0B6AF C4EAB6C8B1A8B8E6>

新, 各 地 各 部 门 ( 单 位 ) 各 文 化 事 业 单 位 要 高 度 重 视, 切 实 加 强 领 导, 精 心 组 织 实 施 要 根 据 事 业 单 位 岗 位 设 置 管 理 的 规 定 和 要 求, 在 深 入 调 查 研 究 广 泛 听 取 意 见 的 基 础 上, 研 究 提

第2章 数据类型、常量与变量

中 国 软 科 学 年 第 期!!!

(Microsoft Word - NCRE\314\345\317\265\265\367\325\37313\324\27221\272\3051.doc)

何 秋 琳 张 立 春 视 觉 学 习 研 究 进 展 视 觉 注 意 视 觉 感 知

课程类 别

深圳市新亚电子制程股份有限公司

Microsoft PowerPoint - plan03.ppt

金 不 少 于 800 万 元, 净 资 产 不 少 于 960 万 元 ; (3) 近 五 年 独 立 承 担 过 单 项 合 同 额 不 少 于 1000 万 元 的 智 能 化 工 程 ( 设 计 或 施 工 或 设 计 施 工 一 体 ) 不 少 于 2 项 ; (4) 近 三 年 每 年

国债回购交易业务指引

 编号:

<4D F736F F D C4EAB9A4B3CCCBB6CABFCAFDD1A7D7A8D2B5BFCEBFBCCAD4B4F3B8D9D3EBD2AAC7F3>




数 学 标 准 不 练 习 1.1 理 解 问 题 并 坚 持 解 决 这 些 问 题 1.2 以 抽 象 和 定 量 方 式 推 理 1.3 建 构 可 行 参 数 和 评 判 他 人 的 推 理 1.4 使 用 数 学 方 法 建 模 1.5 策 略 性 地 使 用 合 适 的 工 具 1.6

ETF、分级基金规模、份额变化统计

珠江钢琴股东大会

<4D F736F F D20B9D8D3DAB0BABBAAA3A8C9CFBAA3A3A9D7D4B6AFBBAFB9A4B3CCB9C9B7DDD3D0CFDEB9ABCBBE C4EAC4EAB6C8B9C9B6ABB4F3BBE1B7A8C2C9D2E2BCFBCAE92E646F6378>

导 数 和 微 分 的 概 念 导 数 的 几 何 意 义 和 物 理 意 义 函 数 的 可 导 性 与 连 续 性 之 间 的 关 系 平 面 曲 线 的 切 线 和 法 线 导 数 和 微 分 的 四 则 运 算 基 本 初 等 函 数 的 导 数 复 合 函 数 反 函 数 隐 函 数 以

随着执业中医师资格考试制度的不断完善,本着为我校中医学专业认证服务的目的,本文通过对我校中医类毕业生参加2012年和2013年的中医执业医师考试成绩及通过率、掌握率进行分析,并与全国的平均水平进行差异比较分析,以此了解我校执业中医师考试的现状,进而反映我校中医类课程总体教学水平,发现考核知识模块教学中存在的不足,反馈给相关学院和教学管理部门,以此提高教学和管理水平。

!!!!!!!!!!


附件1:

ICS 35

<433A5C446F63756D656E E E67735C41646D696E F725CD7C0C3E65CC2DBCEC4CFB5CDB3CAB9D3C3D6B8C4CFA3A8BCF2BBAFA3A95CCAB9D3C3D6B8C4CF31302D31392E646F63>

,,,,, :,, (.,, );, (, : ), (.., ;. &., ;.. &.., ;, ;, ),,,,,,, ( ) ( ),,,,.,,,,,, : ;, ;,.,,,,, (., : - ),,,, ( ),,,, (, : ),, :,

电信系教学大纲的基本规范

<433A5C C6B73625C B746F705CB9FABCCAD6D0D2BDD2A9D7A8D2B5B8DFBCB6BCBCCAF5D6B0B3C6C6C0C9F3C9EAC7EBD6B8C4CFA3A CDA8D3C3B0E6A3A92E646F63>

<4D F736F F D C3E6CFF2B6D4CFF3A3A8B5DAC8FDD5C220C0E0CCD8D0D4A3A92E646F63>

名 称 生 命 科 学 学 院 环 境 科 学 1 生 物 学 仅 接 收 院 内 调 剂, 初 试 分 数 满 足 我 院 生 物 学 复 试 最 低 分 数 线 生 命 科 学 学 院 生 态 学 5 生 态 学 或 生 物 学 生 命 科 学 学 院

0 年 上 半 年 评 价 与 考 核 细 则 序 号 部 门 要 素 值 考 核 内 容 考 核 方 式 考 核 标 准 考 核 ( 扣 原 因 ) 考 评 得 3 安 全 生 产 目 30 无 同 等 责 任 以 上 道 路 交 通 亡 人 事 故 无 轻 伤 责 任 事 故 无 重 大 质 量

一 从 分 封 制 到 郡 县 制 一 从 打 虎 亭 汉 墓 说 起

·岗位设置管理流程

登录、注册功能的测试用例设计.doc

附 件 : 上 海 市 建 筑 施 工 企 业 施 工 现 场 项 目 管 理 机 构 关 键 岗 位 人 员 配 备 指 南 二 一 四 年 九 月 十 一 日 2

<4D F736F F D20CAAEC8FDCEE5B9E6BBAED7EED6D5B8E5352E33312E646F63>

全国建筑市场注册执业人员不良行为记录认定标准(试行).doc

Microsoft Word - 文件汇编.doc

<4D F736F F D20B3D6B2D6CFDEB6EEB1EDB8F1D7EED6D52E646F63>

<443A5C6D B5C30312EB9A4D7F7CEC4B5B55C30322EBACFCDACCEC4B5B55C C30342EC8CBC9E7CCFC5C31332ECFEEC4BFC5E0D1B55C E30385C322EB2D9D7F7CAD6B2E12E646F63>


untitled

修改版-操作手册.doc

抗 日 战 争 研 究 年 第 期

行政管理学考试题库

通用短信平台HTTP接口使用说明V1.0.4

目 录 关 于 图 标... 3 登 陆 主 界 面... 3 工 单 管 理... 5 工 单 列 表... 5 搜 索 工 单... 5 工 单 详 情... 6 创 建 工 单... 9 设 备 管 理 巡 检 计 划 查 询 详 情 销 售 管

Microsoft PowerPoint - plan03.ppt


学 年 第 二 学 期 集 中 考 试 安 排 (18 周 ) 考 试 日 期 :6 月 27 日 星 期 一 8:10-9:50 第 二 公 共 教 学 楼 A 区 A 高 等 数 学 ( 理 二 2) 复 材 材 料 科 学 与 工 程

证券代码: 证券简称:长城电脑 公告编号:

工 程 勘 察 资 质 标 准 根 据 建 设 工 程 勘 察 设 计 管 理 条 例 和 建 设 工 程 勘 察 设 计 资 质 管 理 规 定, 制 定 本 标 准 一 总 则 ( 一 ) 本 标 准 包 括 工 程 勘 察 相 应 专 业 类 型 主 要 专 业 技 术 人 员 配 备 技 术

2. 本 次 修 改 后, 投 资 者 申 购 新 股 的 持 有 市 值 要 求 市 值 计 算 规 则 及 证 券 账 户 使 用 的 相 关 规 定 是 否 发 生 了 变 化? 答 : 未 发 生 变 化 投 资 者 申 购 新 股 的 持 有 市 值 是 指, 以 投 资 者 为 单 位

白皮书

18 上 报 该 学 期 新 生 数 据 至 阳 光 平 台 第 一 学 期 第 四 周 至 第 六 周 19 督 促 学 习 中 心 提 交 新 增 专 业 申 请 第 一 学 期 第 四 周 至 第 八 周 20 编 制 全 国 网 络 统 考 十 二 月 批 次 考 前 模 拟 题 第 一 学

I

全面预算管理暂行办法

评 委 : 徐 岩 宇 - 个 人 技 术 标 资 信 标 初 步 审 查 明 细 表 序 号 投 标 单 位 投 标 函 未 按 招 标 文 件 规 定 填 写 漏 填 或 内 容 填 写 错 误 的 ; 不 同 投 标 人 的 投 标 文 件 由 同 一 台 电 脑 或 同 一 家 投 标 单

评 委 : 李 炎 斌 - 个 人 技 术 标 资 信 标 初 步 审 查 明 细 表 序 号 投 标 单 位 投 标 函 未 按 招 标 文 件 规 定 填 写 漏 填 或 内 容 填 写 错 误 的 ; 不 同 投 标 人 的 投 标 文 件 由 同 一 台 电 脑 或 同 一 家 投 标 单


clad_exam_preparation_guide

4.3.3 while 语 句 用 于 无 限 循 环 当 while 语 句 的 表 达 式 永 远 不 会 为 布 尔 假 时, 循 环 将 永 远 不 会 结 束, 形 成 无 限 循 环, 也 称 死 循 环 使 用 while 语 句 构 成 无 限 循 环 的 格 式 通 常

目 录 第 一 章 黄 金 市 场 基 础 知 识... 4 第 一 节 黄 金 白 银 铂 的 基 本 特 性... 4 一 黄 金 基 本 特 性... 4 二 白 银 基 本 特 性... 4 三 铂 的 基 本 特 性... 4 第 二 节 黄 金 的 文 化 渊 源... 4 一 黄 金

马 克 思 主 义 公 正 观 的 基 本 向 度 及 方 法 论 原 则!! # #

(1) 信 息 系 统 项 目 管 理 综 合 知 识, 考 试 时 间 为 150 分 钟, 笔 试, 选 择 题 ; (2) 信 息 系 统 项 目 管 理 案 例 分 析, 考 试 时 间 为 90 分 钟, 笔 试, 问 答 题 ; (3) 信 息 系 统 项 目 管 理 论 文, 考 试

秦川发展第五届第三次

Cybozu Garoon 3 管理员手册

3 月 30 日 在 中 国 证 券 报 上 海 证 券 报 证 券 时 报 证 券 日 报 和 上 海 证 券 交 易 所 网 站 上 发 出 召 开 本 次 股 东 大 会 公 告, 该 公 告 中 载 明 了 召 开 股 东 大 会 的 日 期 网 络 投 票 的 方 式 时 间 以 及 审

2.5 选 举 陈 晓 非 女 士 为 第 六 届 董 事 会 董 事 候 选 人 的 议 案 ; 2.6 选 举 卢 婕 女 士 为 第 六 届 董 事 会 董 事 候 选 人 的 议 案 ; 2.7 选 举 张 文 君 先 生 为 第 六 届 董 事 会 独 立 董 事 候 选 人 的 议 案

上海证券交易所会议纪要


<4D F736F F D20D0A3B7A2A1B A1B BAC5B9D8D3DAD7E9D6AFBFAAD5B9C8ABD0A3BDCCD6B0B9A4B8DACEBBC6B8D3C3B1E4B6AFB9A4D7F7B5C4CDA8D6AA2E646F63>

培 养 的 专 业 办 学 理 念,2010 年 的 培 养 目 标 与 要 求 为 : 专 业 ( 师 范 ): 本 专 业 培 养 具 有 良 好 数 学 基 础, 掌 握 学 基 本 理 论 基 本 知 识 和 基 本 方 法 与 技 能, 能 从 事 及 应 用 领 域 的 多 层 次 复


系统设计文档_样稿管理模块 V1.1_.doc

Microsoft Word - 工业品封面.doc

<4D F736F F D20C6F3D2B5C5E0D1B5CAA6B9FABCD2D6B0D2B5B1EAD7BC2E646F63>

Microsoft Word - 第3章.doc

2009—2010级本科课程教学大纲与课程简介格式

科学数据共享标准

思 想 政 治 理 论 经 核 查 无 误 思 想 政 治 理 论 经 核 查 无 误 思 想 政 治 理 论 经 核 查 无 误 思 想

第 四 条 建 设 单 位 对 可 能 产 生 职 业 病 危 害 的 建 设 项 目, 应 当 依 照 本 办 法 向 安 全 生 产 监 督 管 理 部 门 申 请 职 业 卫 生 三 同 时 的 备 案 审 核 审 查 和 竣 工 验 收 建 设 项 目 职 业 卫 生 三 同 时 工 作 可

中 中 中 中 部 中 岗 位 条 件 历 其 它 历 史 师 地 理 师 生 物 师 体 与 健 康 师 从 事 中 历 史 工 从 事 中 地 理 工 从 事 中 生 物 工 从 事 中 体 与 健 康 工 2. 课 程 与 论 ( 历 史 ); 2. 科 ( 历 史 )

Microsoft Word - 中节能_工业项目节能评估审查导则Draft.doc

Transcription:

函 数 式 编 程 入 门 卢 小 海, 绿 盟 科 技 密 级 : 内 部 使 用 www.nsfocus.com nsfocus.com 2009 绿 盟 科 技

议 程 (Agenda) 1 历 史 背 景 2 编 程 范 式 3 基 本 概 念 4 真 实 案 例 5 参 考 资 料

软 件 危 机 如 何 应 对 计 算 机 程 序 日 益 增 加 的 规 模 和 复 杂 性 LOC, line of code. Window 3.1(1992) 3million LOC, Windows 2000 30-50million LOC 如 何 降 低 开 发 软 件 和 维 护 软 件 的 费 用 maintenance can be up to 70%, including understanding, debugging and modifying the code 如 何 增 强 我 们 对 于 软 件 正 确 性 的 信 心 The European Ariane 5(1996), cost 10 years and $7billion, explode after 40s in its maiden voyage; the floating point division in the Pentium processor cost Intel around 470 million

程 序 设 计 语 言 内 容 简 洁 语 义 清 晰 语 法 抽 象 性 易 于 重 用 支 持 快 速 原 型 设 计 自 劢 化 解 决 问 题 工 具 形 式 化 验 证 设 计 一 个 新 的 语 言? 函 数 式 语 言!

函 数 式 编 程 定 义 functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. Functional programming is style of programming in which the basic method of computation is the application of functions to arguments;

函 数 式 编 程 风 格 Java total = 0; for (i = 1; i 10; ++i) total = total+i; Haskell sum [1..10] Python sum(range(10)) reduce(lambda x, y: x+y, range(10))

Long Long Ago - lambda calculus 1920s 1940s: and Alonzo Church Haskell Curry developed lambda calculus(λ 演 算 ), 它 是 一 个 函 数 的 理 论, 也 是 串 行 计 算 的 一 个 模 型

Long Long Ago - LISP 1960s: John McCarthy develops the first functional language Lisp, influenced by lambda calculus, but still with variable assignments.

历 史 背 景 Late 1960s: Peter Landin develops ISWIM, the first pure functional language, based strongly on lambda calculus 1978 John Backus publishes FP, a functional language that emphasized high-order functions and calculating with programs. Mid1970s: Robin Milner develops ML, the first of the modern functional languages, which introduced type inference and polymorphic types.

David Turner develops Miranda 1988: A committee of prominent researchers publishes the first definition of Haskell, a standard lazy functional language. 历 史 背 景 1999: The committee publishes the definition of Haskell98

历 史 背 景 Ancester Lambda Calculus, Alonzo Church, 1933-1934 f = λ x. x+1!= g = λ x. (n:=x; x + 1) Early FL LISP, McCarthy, 1950s, lambda notation FP, Backus, 1979, higher-order functions Modern FL ML, U. of Edinburgh, 1970s, Static type systems, Algebraic datatypes and pattern matching Miranda, David Turner, 1985, lazy evaluation

编 程 范 式 (Programming Paradigm) 1 历 史 背 景 2 编 程 范 式 3 基 本 概 念 5 真 实 案 例 6 参 考 资 料

编 程 范 式 类 别 声 明 式 (Declarative programming) 程 序 定 义 如 何 将 输 入 转 换 为 输 出, 是 一 个 表 达 式 关 注 焦 点 : 计 算 什 么 的 逻 辑, 而 非 控 制 流 SQL, Scheme, Haskell 命 令 式 (Imperative programming) 程 序 是 命 令 的 序 列, 运 行 时 按 顺 序 执 行 关 注 的 焦 点 : 如 何 进 行 计 算, 及 其 中 间 状 态 C, Java, Ada and Pascal

编 程 范 式 发 展

语 言 特 性 polymorphism Haskell statically typed parameterized types type classes dynamically typed unification type inferenc e overloading lazy object oriented backtracking reflectio n higher-order functions immutable datastructures high performance metaprogrammin g compiler pure functions concurrency distribution virtual machine C real-time Java interpreter

热 门 话 题 (Hot Topic) Hot topic in PL community and industry Compilers/compiler-like Domain-specific languages (Haskell) build your own programming language with little effort Telecom industry (Erlang) Dealing with complex protocols/data-flow Need to get right Financial industry (Haskell) Dealing with complex calculations Need to get right

基 本 概 念 (Basic Concepts) 1 历 史 背 景 2 编 程 范 式 3 基 本 概 念 4 真 实 案 例 5 参 考 资 料

高 序 函 数 (Higher-order functions) 函 数 允 许 将 函 数 作 为 参 数 传 入 戒 作 为 结 果 返 回 类 似 first-class functions 但 偏 重 于 描 述 数 学 概 念 class worker(object): def init (self, name = None): self.name = name def call (self, func): def wrapped(*args, **kwds): return func(*args, **kwds) wrapped.name = self.name or func. name wrapped.func = func wrapped.type = Worker return wrapped @worker('dns') def dns_query(domains, dnsservers=none): return dict([(domain, list(dnsquery(str(domain), dnsservers))) for domain in domains])

高 序 函 数 - Currying 允 许 对 函 数 参 数 进 行 逐 步 绑 定 1. 求 值 函 数 f(x,y) = y / x 2. 目 标 是 计 算 f(2,3) 3. 中 间 函 数 g(y) = f(2,y) = y / 2 4. 进 行 计 算 g(3) = f(2,3) = 3 / 2 >>> from functional import curry >>> computation = lambda a,b,c,d: (a + b**2 + c**3 + d**4) >>> computation(1,2,3,5) >>> fillzero = curry(computation) >>> fillone = fillzero(1) >>> filltwo = fillone(2) >>> fillthree = filltwo(3) >>> answer = fillthree(5) >>> answer 657

通 过 模 板 和 指 针 的 方 式 模 拟 int f(int a, int b) { return a + b; } int g(int a, int b, int c) { return a + b + c; } 高 序 函 数 C++ 标 准 C++ 模 板 函 数 bind1st/bind2st std::bind1st(std::ptr_fun(f), 5)(x); // f(5, x) Boost::Bind 模 板 库 bind(f, 5, _1)(x); // f(5, x) bind(f, _2, _1)(x, y); // f(y, x) bind(g, _1, 9, _1)(x); // g(x, 9, x) bind(g, _3, _3, _3)(x, y, z); // g(z, z, z) bind(g, _1, _1, _1)(x, y, z); // g(x, x, x)

Pure functions 纯 粹 的 函 数 式 函 数 戒 表 达 式, 没 有 内 存 戒 I/O 的 副 作 用 (side effects) 结 果 的 表 达 式 没 被 使 用, 可 以 被 删 除 并 没 有 影 响 同 一 函 数 在 使 用 相 同 参 数 调 用 时, 返 回 值 结 果 不 变 可 针 对 计 算 内 容 进 行 Memoization 优 化 ( 示 例 ) 如 果 两 个 纯 表 达 式 没 有 数 据 依 赖 关 系, 则 他 们 的 顺 序 可 以 颠 倒 戒 并 行 执 行, 等 同 于 线 程 安 全 如 果 整 个 语 言 不 允 许 副 作 用, 则 可 以 参 与 任 意 的 求 值 计 算 策 略 (evaluation strategy), 编 译 器 可 以 自 由 排 列 戒 组 合 表 达 式

Pure Functions - 控 制 副 作 用 Python, 使 用 lambda 表 达 式 戒 generator bigmuls = lambda xs,ys: filter(lambda (x,y):x*y > 25, combine(xs,ys)) combine = lambda xs,ys: map(none, xs*len(ys), dupelms(ys,len(xs))) dupelms = lambda lst,n: reduce(lambda s,t:s+t, map(lambda l,n=n: [l]*n, lst)) print bigmuls((1,2,3,4),(10,15,3,22)) print [(x,y) for x in (1,2,3,4) for y in (10,15,3,22) if x*y > 25] GCC, 提 供 pure 属 性 提 示 编 译 优 化 int square (int) attribute ((pure));

Recursion 通 过 递 归 完 成 遍 历 (Iteration) 戒 循 环 (looping) 操 作 计 算 Fibonacci 序 列 fac(0) -> 1; fac(n) -> N * fac(n-1). 尾 递 归 (tail recursion) 优 化 从 栈 调 用 循 环 函 数 优 化 为 单 纯 循 环 fac(n) -> fac(n,1). fac(0,a) -> A; fac(n,a) -> fac(n-1,n*a).

Strict versus non-strict evaluation 函 数 语 言 可 以 根 据 是 否 进 行 惰 性 计 算 (lazy evaluation) 来 分 类 是 否 对 参 数 在 使 用 前 进 行 求 值, 严 格 (Strict) 模 式 会 直 接 计 算 参 数 print length([2+1, 3*2, 1/0, 5-4]) Miranda, Clean 和 Haskell 等 支 持 Non-strict 模 式. 适 用 于 有 大 量 中 间 计 算 节 点 的 场 景, 例 如 graph reduction 算 法, 用 于 AST 优 化 戒 图 裁 剪

Python, Erlang 等 语 言 需 要 进 行 模 拟 Python Generator w/ yield def reverse(data): for index in range(len(data)-1, -1, -1): yield data[index] for char in reverse( golf ): print char 惰 性 计 算 - lazy evaluation

强 类 型, 编 译 期 检 查 出 大 部 分 问 题 使 用 boolean 类 型 的 函 数 不 能 使 用 int 不 提 供 自 劢 类 型 转 换 等 Syntactic Sugar 使 用 Pattern Matching 细 化 类 型 范 围 简 单 系 统, 只 定 义 基 础 类 型 Type systems and pattern matching 沿 袭 LISP 等 设 计 思 路, 强 于 对 列 表 的 操 作 没 有 指 针 等 物 理 实 现 层 面 的 概 念 倾 向 于 于 数 学 意 义 上 函 数 的 定 义 与 解 释

Pattern, 一 组 符 合 特 定 类 型 的 变 量 集 Name1, [H T], {error,reason} Matching, 根 据 Pattern 定 义 函 数 适 用 范 围 % parse a complete header from raw data, we assume a header ends with \r\n (0d 0a) extract_header(<<"\r\n", Rest/binary>>, <<>>) -> {empty, Rest, <<>>}; extract_header(<<"\r\n", Rest/binary>>, Header) -> {done, Rest, Header}; extract_header(<<>>, Header) -> {incomplete, <<>>, Header}; extract_header(<<b:8, Rest/binary>>, Header) -> Header2 = <<Header/binary, B:8>>, extract_header(rest, Header2). Pattern Matching - Erlang

Pattern Matching 限 定 范 围 parse_params([], Params) -> Params; parse_params([{username, Value} L], Params) when is_list(value) -> parse_params(l, Params#amqp_params{ username = list_to_binary(value) }); parse_params([{password, Value} L], Params) when is_list(value) -> parse_params(l, Params#amqp_params{ password = list_to_binary(value) }); parse_params([{virtual_host, Value} L], Params) when is_list(value) -> parse_params(l, Params#amqp_params{ virtual_host = list_to_binary(value) }); parse_params([{host, Value} L], Params) when is_list(value) -> parse_params(l, Params#amqp_params{ host = Value }); parse_params([{port, Value} L], Params) when is_integer(value) -> parse_params(l, Params#amqp_params{ port = Value }); parse_params([{ssl_options, Value} L], Params) when is_atom(value) - > parse_params(l, Params#amqp_params{ ssl_options = Value }).

真 实 案 例 RabbitMQ Erlang 开 发 的 开 源 高 性 能 消 息 队 列 使 用 AMQP 协 议 访 问 队 列, 开 发 较 为 复 杂 Memcached C 开 发 的 开 源 高 性 能 缓 存 服 务 使 用 基 于 文 本 戒 二 进 制 的 简 单 数 据 协 议 基 本 上 常 见 语 言 都 提 供 完 善 的 客 户 端 API 支 持 Rabbitmq-memcached Erlang 开 发 的 开 源 消 息 队 列 访 问 代 理 允 许 使 用 memcache 协 议 访 问 RabbitMQ 支 持 运 行 在 独 立 代 理 和 内 嵌 揑 件 模 式

代 码 结 构 memcached_app tcp_listener memcached_stats udp_listener tcp_acceptor w/ memcached_server tcp_acceptor w/ memcached_server

参 考 资 料 A Brief History of Functional Programming http://www.cse.lehigh.edu/~gtan/historyoffp/historyoffp.html Tutorial Papers in Functional Programming http://www.math.chalmers.se/~rjmh/tutorials.html Programming paradigm, Wiki http://en.wikipedia.org/wiki/programming_paradigm Charming Python: Functional programming in Python, Part 1, Part 2, Part 3 A Better Javascript Memoizer http://unscriptable.com/index.php/2009/05/01/a-better-javascript-memoizer/ An Analysis of Lazy and Eager Evaluation in Python http://www.pages.drexel.edu/~kmk592/rants/lazy-python/index.html

谢 谢!