プログラミング言語論 第7回 関数型言語 担当:犬塚 (第6回は欠番).

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
退 出 退 出 上一页 下一页 一、零件图中尺寸标注的基本要求 §7-7 零件图中尺寸的合理注法 零件图的尺寸,应注得符合标准、齐全、清晰和合理。 合理标注尺寸的要求: ⑴ 满足设计要求,以保证机器的质量, ⑵ 满足工艺要求,以便于加工制造和检验。 要达到这些要求,仅靠形体分析法是不够的,还必须掌握一定的.
Advertisements

量子力学 第四章 力学量与算符. 第二章中,求 的平均值时,引入了算符概念: 将这一概念推广,得量子力学的第四个基本假定: * 任一力学量 A ,对应于一力学量算符 即, 那么: 1. 量子力学中算符的一般定义是什么? 2. 算符之间如何运算? 3. 与力学量 A 对应的算符 与数学上的一般算符有何异同?
古紙リサイクルのホントのところ とやま古紙再生サークル.
技术经济学 第四讲 主讲教师:刘玉国 学时: 16 学时. 第三章 资金的时间价值及等值计算  3.1 资金的时间价值  3.2 计算资金时间价值的基本方法  3.3 资金等值计算  3.4 几种常见的普通复利公式.
第四回レポートの講評.
装置詳細. AD 変換器のマニュアルを見てみよ う 入力チャンネル 入力チャンネル 4ch この AD 変換器は、本来四つの信号を読む ことが出来る.
高エネルギー実験の紹介.
データ収集. 正弦波のデータ 今、正弦波のデータ になっているはずで す。 6、7秒程度、正弦 波のデータの取りま しょう.
光の三原色 色材の三原色.
最新計算機概論 第4章 數位邏輯設計.
实验二 流量计校正 即离心泵综合实验 化工原理实验教学研究室. 为满足化工生产工艺的要求, 一定流量的流体需远距离输送, 或者从低处送到高处,或者从低 压处送至高压处,因此必须向流 体提供能量,需要时也对流体的 流量进行测量与控制。 化工原理实验教学研究室.
第六章 隨機利率下零息債券的評價 蒙地卡羅模擬與二項式模型 財務工程 呂瑞秋著.
結構學(一) 第五次作業 97/04/24.
实验七 RLC 串联电路的幅频特性和谐振 一、实验目的 l 、研究 RLC 串联电路的幅频特性(也就是谐 振曲线) 2 、研究串联谐振现象及电路参数对谐振特性 的影响。
实验四 常用电子仪器的使用 一. 实验目的 1. 了解示波器的工作原理。 2. 初步掌握示波器的正确使用方法。练习 正确实用示波器,信号源及交流毫伏表。
热工测量仪表 动力机械的转速、转矩和功率测量. 意义 转速、转矩和功率 —— 描述动力机械运转 状况的关键数据,性能的重要技术参数 转速、转矩和功率 —— 描述动力机械运转 状况的关键数据,性能的重要技术参数 涉及到国民经济各部分 涉及到国民经济各部分 科学技术的进步 —— 动力机械的高速发 展 ——
需要予測.
实验三 过滤试验 化工原理实验教学研究室. 过滤是分离非均相混合物的 方法之一。 本实验装置主要测定给定物 料在一定操作条件和过滤介质时 的过滤常数。 化工原理实验教学研究室.
Jung-Sheng Fu, DEE, NUU, ROC.1 實驗五 : 名稱:導熱係數. 第二章 變數、常數、運算子和運算式 物理實驗 Jung-Sheng Fu, DEE, NUU, ROC2 目的: 瞭解熱傳導特性,測量導熱系數。
第6章:集成DAC和ADC的原理与组成 §6-1 集成数模转换器(DAC) §6-2 集成模数转换器(ADC) §6-3 应用举例
: Problem B: Rocket Stages ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11502: Problem B: Rocket Stages 解題者:李重儀 解題日期: 2008 年 10 月 5 日 題意:簡單的說,題目會給你一個火箭的各個.
最新計算機概論 第4章 數位邏輯設計.
声速的测量 声速的测量 【实验简介】 【实验简介】 声波是在弹性媒质中传播的一种机械波、纵波,其在 媒质中的传播速度与媒质的特性及状态等因素有关。 通过媒质中声速的测量,可以了解被测媒质的特性或 状态变化,因而声速测量有非常广泛的应用,如无损 检测、测距和定位、测气体温度的瞬间变化、测液体 的流速、测材料的弹性模量等。
填料吸收塔的操作 及 吸收传质系数的测定 主讲教师:.
3 次元数値シミュレーション コードの設計 花輪 知幸. 数値シミュレーションによる研 究 モデルの設定 – 微分方程式 – 境界条件・初期条件 数値計算 – 計算コードの作成 – 実行 – データ解析 論文作成.
Application of CFD in C/R Design 胡石政 以統計分析粒子的移動軌跡來評 估亂流型無塵室之通風性能.
《中国药典》 1 国外药典简介 2 药检工作的基本程序 3 第二章 药典概况. 第一节 中国药典 一、基本概念 1. 药品质量标准 国家对药品质量及检验方法所作的技术规定, 是药品生产、 经营、使用、检验和监督管理部门共同遵循的法定依据。 2. 药典 ① 记载药品质量标准的法典; ② 国家监督、管理药品质量法定技术标准;
对流传热系数测定实验.
計算の理論 I -大レポート解答 - 月曜3校時 大月 美佳. 課題 正則表現 (01+10)* について 1. これと等価な ε- 動作を含む NFA を求めよ。 (導出過程、状態遷移図および定義式を書け) 2. 1 の ε- 動作を含む NFA と等価な NFA を求めよ。 (導出過程、状態遷移図および定義式を書け)
平成 16 年新潟県中越地震による斜面災 害緊急シンポジウム 1 中越地震の震源及び内陸地震 の発生予測 東京大学地震研究所 東京大学地震研究所平田 直 謝辞:本調査研究は科学研究費補助金(特別研究促進費) 「 2004 年新潟県中越地震の余震に関する調査研究」の補助を受 けています。 一部の研究は、科学技術振興調整費・緊急研究「平成.
6.5 数字高通、带通和带阻 滤波器的设计. 设计思路  我们已经学习了模拟低通滤波器的设计方法,以 及基于模拟滤波器的频率变换设计模拟高通、带 通和带阻滤波器的方法。对于数字高通、低通和 带阻的设计,可以借助于模拟滤波器的频率变换 设计一个所需类型的模拟滤波器,再通过双线性 变换将其转换成所需类型的数字滤波器,例如高.
第六节 离心泵的特性曲线 水泵的性能参数,标志着水泵的性能。水泵各个性能参数之间的关系和变化规律,可以用一组性能曲线来表达。对每一台水泵而言,当水泵的转速一定时,通过试验的方法,可以绘制出相应的一组性能曲线,即水泵的基本性能曲线。 一般以流量Q为横坐标,,用扬程H、功率N、效率η和允许吸上真空度Hs为纵坐标,绘Q~H、Q~N、Q~η、Q~
第 5 章第 5 章 機率論與機率分配. 5-1 機率定義的確立 (1/2)  隨機實驗 1. 每次試驗中可能出現的結果,不止一種情況, 但出現的情況是已知的 2. 一次只會出現其中一種結果,但在未真正試驗 之前,無法確知那種情況會發生 3. 試驗可在相同的情況下,重複進行  出像:係指試驗所有可能出現的情況.
实验二 基尔霍夫定律 一、实验目的 1. 验证基尔霍夫电流定律、电压定律。 2. 加深对电路基本定律适用范围普遍性 的认识。 3. 进一步熟悉常用仪器的使用方法。
实验五 简单正弦交流电路的研究 一、实验目的 1. 研究正弦交流电路中电压、电流的大小与 相位的关系。 2. 了解阻抗随频率变化的关系。 3. 学会三压法测量及计算相位差角。 4. 学习取样电阻法测量交流电流的方法。 二、实验原理说明 ( 略 )
第五章 呼 吸 呼吸 ( respiration ) 机体与外界环境之间的气体交换过程 呼吸 外呼吸 内呼吸 气体在血液中的运输 肺通气 肺换气.
T5路工單曲線測設 (1)單曲線計算 (2)單曲線測設佈點 實習日期:
核 磁 共 振 兰州理工大学物理实验室.
1. 2 第一节 成形工艺中的冶金反应特点 3 液态成形的化学冶金过程主要发生在金属的熔炼阶 段。主要的物理化学反应为金属的氧化、金属的脱 磷、脱碳、脱氧、脱硫和合金化等。 金属熔炼过程中温度较低,约在 1600 ℃以下。温度 变化范围不大,液态金属的体积较大,熔炼时间较 长,冶金反应进行的较充分和完全,可采用物理化.
財務工程 呂瑞秋著 1 第八章 債券衍生性商品的評價 無套利模型. 財務工程 呂瑞秋著 2 無套利模型與均衡模型 均衡模型是由即期的無風險利率過程設定 開始,零息債券價格與其過程是該模型下 的產物 (output) 無套利模型是由零息債券價格過程設定開 始,零息債券價格與其過程是該模型的投 入因子.
傳統閉迴路控制系統 控制器致動器 ( 馬達 ) 過程 ( 手臂 ) 感測器 設定點受控結果 誤差 比較器.
平成 16 年 6 月 15 日佐賀大学知能情報システム学科 1 計算の理論 I 正則表現と FA との等価性 火曜3校時 大月 美佳.
疑难解析 受控源.
LineCalc & Libra 軟體教學 國立中山大學電機系 射頻微波實驗室 研究生 韓府義 Tel
結構學(一) 第二次作業.
第14章 迴歸分析與複迴歸分析  本章的學習主題  1.使用迴歸分析的時機 2.最小平方法在迴歸分析上的意義 3.迴歸分析的假設
第三章 歐式股票選擇權的評價 Black and Scholes的模型 財務工程 呂瑞秋著.
习 题 精 解 2-1 试判断下列各电路图对正弦交流电压信 号有无放大作用?为什么?. 习 题 精 解 解: 无放大作用,因为 电源 Vcc 极性不对。 无放大作用,因为无 基极偏置电流。
实验一 基本电工仪表及测量误差 一、实验目的 1. 熟悉基本电工仪表的种类。 2. 了解万用表的种类及主要技术 指标。 3. 万用表内阻对测量结果的影响。
實驗四、電晶體共基極放大電路.
吉林大学远程教育课件 主讲人 : 杨凤杰学 时: 64 ( 第二十八讲 ) 离散数学. 定理 设 M 的元数为 n, 若 n>1 , 则奇置换的个数和偶置换的个数相 等,因而都等于 n!/2 。 证明:命 τ 1,τ 2, …,τ m ( 5 ) 为 M 的所有偶置换, 由于 n>1,
化學技術實習(二) 表面化學技術篇 讀萬卷書 與 行萬里路 張基昇.
MHD数値シミュレーションの基礎 ニュートン流体力学方程式 (ニュートン)磁気流体力学方程式 相対論的流体力学方程式
課程: 組織行為 飛鷹計劃 指導教授:徐強.
親の仕送り問題 <マルコフ決定過程>. 問題設定  春から下宿生活をすることになった K 君。  4月から親の仕送りを受ける。  収入・支出のデータをもとに、できるだ け親の負担の少ない仕送り計画を設定す る。
Source: 楊志良,健康保險, Ch 4,pp
民意調查的抽樣 蔡佳泓 政大選舉研究中心 副研究員.
統計學複習0508.
● 以机械能衡算方程为基础的测定方法,应用公式: 1.6 流速和流量测定 ● 流体的速度和流量测定是一个重要的测量参数; ● 测量用的方法和流量计的种类很多。
計算の理論 I ー正則表現と FA の等価性 その 2 ー 月曜3校時 大月 美佳. 連絡事項  自転車がまだ散乱してますね.
實驗六 反應熱的測定.
第五节 刚体的转动 掌握:角速度、角加速度、转动定律、角动量守恒定律 第一章 力学基本定律 理解:角动量、转动惯量.
第二章 关系数据库 RDB 2.1 、关系模型 RM 2.2 、关系代数 2.3 、检索优化. 工号姓名年龄性别工资 4021 ZHAN G 50 男 LI40 女 LIU35 男 WANG25 男 1000 ABCDE a1 a2 a3 a4.
项目二:电气设备的绝缘预防性试验与监测 学习情境二:电气设备的绝缘耐压试验 掌握交流耐压试验所用的仪器和设备、接线及试验方法。 掌握直流流耐压试验所用的仪器和设备、接线及试验方法。 了解冲击耐压试验试验。 教学目标.
SOUTHWESTJIAOTONG UNIVERSITY 学生个性化创新型实验 高 芳 清 基于桥梁结构静、动力行为的 西南交通大学力学实验教学中心.
1. 实验目的 2. 预习要求 3. 实验仪器 4. 实验原理 5. 实验内容 6. 思考题 7. 答案 上海科学技术职业学院.
8.1 概述 8.2 数 / 模( D/A )转换器 8.3 模 / 数( A/D )转换器 退 出 第 8 单元 数 / 模、模 / 数转换.
Hippocrates Ἱπποκράτης.
3N 12h 9h 8h 11h 10h -20° -10° 0° +10° +20o +30° +40° 7h 6h 5h 4h +20°
総研セミナー開催案内 第59回 下記のとおり「総研セミナー」を開催いたします。
Μεταγράφημα παρουσίασης:

プログラミング言語論 第7回 関数型言語 担当:犬塚 (第6回は欠番)

今日の講義 関数型プログラミング言語 その特徴 ラムダ計算 LISP入門 LISPプログラミング

ラムダ計算 λ(lambda)-calculus 計算について理論的に考えるときに使う標準体系の一つ。(チューリング機械もその1つ) 関数型言語の理論的基礎。 関数の合成と適用によって計算を表現。 関数と対象を区別しない。

λを使った関数の表現 通常用いる関数の表現: f (x) = x2 + x + 1 λ計算では、上の関数を次のように書く。 あるいは、型付のλ計算では次のように書く。 λx∈N . x2 + x + 1

λを使った関数の表現 λx. x2 + x + 1 関数名を付けずに、関数を表現できる。 そのまま適用できる。 名前をつけることもできる。 f λx. x2 + x + 1 ( f 4 ) = 21 名前なしの関数を、無名関数という(LISPの用語)

(純粋)λ計算の構文 定義:λ式 変数 x, y, z, … はλ式である。 Mがλ式, x が変数のとき (λx. M)はλ式である。 M,Nがλ式のとき (MN)はλ式である。 括弧は適当に省略する。 2の構文を関数抽象(functional abstraction)、 3の構文を関数適用(functional application)という。 関数抽象は式Mに対し、変数xが引数だと教えること。 関数適用はまさに関数MにNを適用すること。

α変換とβ変換 M中の x をすべて y に置換える操作を M{y/x}と書く。 α変換:引数と関数本体中の変数を同時に置換えても式の意味は変わらない。 (λx. M)=(λy.M{y/x}), ただしyはMに現れない変数。 β変換:関数適用の形式で、実際に適用を行っても意味は変わらない。 ((λx. M)N)=M{N/x}

例1 純粋λ計算は、+とかーはまったく出てこないけれど、直感的な例を示す。 M (λx. x + x) のとき、 =2+2 (β変換) =4 ← M  (λx. x + x) 、N (λx. 5 * x)のとき、 (M(N 3)) = ((λx. x + x) ((λx. 5 * x) 3 )) = ((λx. x + x) (5 * 3)) (β変換) = ((λx. x + x) 15) ← =15+15 (β変換) =30 ← ※) ← の箇所は、α変換でもβ変換でもない。 つまり、+や*などの組込み計算。 これをδ変換ということもある。

例1 つづき 前の例は、別のやり方もある。 (M(N 3)) = ((λx. x + x)((λx. 5 * x) 3)) 例1 つづき 前の例は、別のやり方もある。 (M(N 3)) = ((λx. x + x)((λx. 5 * x) 3)) = ((λx. x + x)((λy. 5 * y) 3))(α変換) = ((λy. 5 * y) 3) + ((λy. 5 * y) 3) (β変換) = 15 + 15 (δ変換) (※ このように、どの部分から計算しても結果が同じという性質を合流性(チャーチ=ロッサー性)という。)

例2 (多引数の関数) 純粋λ計算では引数は1つだが、多引数も省略法として許す。 M λxy. x + y のとき、 例2 (多引数の関数) 純粋λ計算では引数は1つだが、多引数も省略法として許す。 M  λxy. x + y のとき、    (M 2 5) = ((λxy. x + x) 2 5) =2+5=7 つまり、次の形式の省略。 M  (λx.(λy. x + y)) のとき、    (M 2 5) = ((M 2) 5) = (((λx.(λy. x + y) ) 2) 5) = ((λy. 2 + y) 5) = 2 + 5=7

例3 (関数引数) M λf. (λx. ( f ( f x ))) N λy. y*y のとき、 ((M N) 3) 例3 (関数引数) M λf. (λx. ( f ( f x ))) N    λy. y*y のとき、 ((M N) 3) =(((λf. (λx.( f ( f x ))))(λy. y*y))3) =((λx.((λy. y*y)((λy. y*y)x )))3) =((λy. y*y)((λy. y*y) 3 )) =((λy. y*y)(λy. 3*3)) =((λy. y*y)9) =9*9 =81

一級市民としての関数、汎関数 λ計算では値も関数も区別なく、なんでも関数に適用できる。 これを関数も一級市民(first-class citizen)であるという。 関数は、値だけでなく関数を値として取れる。   つまり、前の例では    N : 自然数の集合→自然数の集合  M : {(自然数の集合→自然数の集合)        のタイプの関数の集合        × 自然数の集合}→自然数の集合 Mは、関数を受取って動作する関数である。  =こうしたものを汎関数(functional)   または高階の関数(higher order function)という。

多引数の関数と汎関数 2引数の関数 f : N×N→N は、λ式では例えば次のような定義になる。 λx. (λy. x + y) この式は、1つの値、例えば3、を受取ると、 ((λx. (λy. x + y)) 3) = λy. 3 + y となる。1つの値を適用することで1引数関数となった。 つまり、2引数関数  f : N×N→N  は、 1引数の汎関数  f : N→ (N→N) と見なせる。 ※このような扱いを、関数のカリー(Curry)化という。

練習 L λf g x. (g ( f x ) ( f x ) )) M λy. y*y N λxy. x + y のとき、 (L M N 3)= ((λf g x. (g ( f x ) ( f x )))) M N 3) = (N( M 3) ( M 3)) = ((λxy. x + y) ((λy. y*y) 3) ((λy. y*y) 3)) = ((λxy. x + y) 9 9) = 18

練習 L λf g x. (g ( f x ) ( f x )) M λy. y*y N λxy. x + y のとき、 (L M N 3) =((λfgx.(g(f x)(f x)))(λy.y*y)(λxy.x+y)3) =((λxy.x+y) ((λy.y*y) 3)((λy.y*y) 3))) =((λxy.x+y) ((λz.z*z) 3)((λz.z*z) 3))) =((λz.z*z) 3 ) + ( (λz.z*z) 3) =(3*3 ) + ( 3*3)=18

LISP 関数型プログラミング言語 J. McCarthyの設計,1959。 実装1962。 λ計算を基礎理論とする。 Lisp : List Processor 記号処理、人工知能用。 純粋にλ計算に基づく関数型言語 純LISP 実用的な実際のLISP: 関数以外の要素を持つ 副作用

LISP入門 LISPでは関数の適用は、次の形式を取る: 前置き記法 (関数名 引数1 引数2 ... ) 算術関数は用意されている。 LISPでは関数の適用は、次の形式を取る: 前置き記法   (関数名 引数1 引数2 ... ) 算術関数は用意されている。   (+ 2 7) → 9 関数の定義   (defun f (x) (+ x 2)) ⇒ f = (λx. (+ x 2))   式本体 x+2 を変数で関数抽象した λx.x+2に   fという名をつけている。 関数の適用   (f 5) → 7 LISPでは、式を計算する(評価する)ことを、eval(エバル)するという。

LISP入門 関数の定義 (defun f (x) (+ x 2)) 式本体 x+2 を変数で関数抽象した λx.x+2に 関数の適用   (f 5) → 7 LISPでは式を計算(評価)することを、eval(エバル)するという。 (f 5)をevalして、7となった。 二引数も同様   (defun sum (x y) (+ x y))

練習 (1) (defun dbl (x) (+ x x)) (defun sqr (x) (* x x)) (defun sum (x y) (+ x y))   のとき、次の式をエバルせよ。   ① (dbl 4)   ② (sum (dbl 5) (sqr 3)) (2) 関数 g(x, y)=x3+2xy-4 を定義せよ。 (defun g(x y) (- (+ (* x x x) (* 2 x y)) 4))

LISPでも関数は一級市民 (twice ’dbl 3) → 12 (twice ’sqr 3) → 81 (defun dbl (x) (+ x x)) (defun sqr (x) (* x x)) (dbl 3) → 6 (sqr 3) → 9 これは次の形式でも同じ。 (funcall ’dbl  3) → 6 (funcall ’sqr  3) → 9 「’」はクォートといい、これをつけると dbl の値(束縛された関数)でなく、 dblという変数そのものを意味する。 (defun twice (f x) (funcall (f (f x)))) (twice ’dbl 3) → 12 (twice ’sqr 3) → 81

lambda 式 λ式そのものもLISPでは使える。 M=λx y. x+2y に対して、(M 3 4)を計算するには、 (funcall #’(lambda (x y) (+ x (* 2 y))) 3 4) とかく。 つぎの式はどうなるか? (twice #’(lambda (x) (* (+ x 1) 2)) 4)

練習 (distribute f g x)とあたえると、(f (g x) (g x))を計算する汎関数distributeを定義してみよ。 (defun distribute (f g x) (funcall f (funcall g x) (funcall g x)) ) (distribute #’(lambda (x y) (+ x y)) #’(lamnda (x) (* x x) 3)

まとめ λ計算は関数を中心にいた計算モデル。 関数と値を区別しない ― 関数も一級市民 その場合、関数を引数にとる関数となる=汎関数 関数抽象、関数適用 関数と値を区別しない ― 関数も一級市民 その場合、関数を引数にとる関数となる=汎関数 LISPはλ計算に基づいた関数型言語 関数定義 - defun式 関数抽象 - lambda式 関数の適用 ー funcall関数 LISPでも、関数は一級市民