Type Systems and Programming Languages ; chapter 13 “Reference”

Slides:



Advertisements
Similar presentations
プログラミング Ⅱ 第2回 第1回(プログラミングⅠの復 習) の解説. プログラムの作り方 いきなり完全版を作るのではなく,だんだ んふくらませていきます. TicTa cToe1.
Advertisements

情報基礎実習 I (第6回) 木曜4・5限 担当:北川 晃. Stream クラスを用いたファイルの接続 … Dim インスタンス名 As New IO.StreamReader( _ “ ファイルの絶対パス ”, _ System.Text.Encoding.Default) … s = インスタンス名.
2.5 プログラムの構成要素 (1)文字セット ① ASCII ( American Standard Code for Interchange ) JIS コードと同じ ② EBCDIC ( Extended Binary Coded Decimal for Information Code ) 1.
5.制御構造と配列 場合分け( If Then Else , Select Case ) 繰返し( Do While ) 繰返しその2( For Next )
第 5 章 2 次元モデル Chapter 5 2-dimensional model. Contents 1.2 次元モデル 2-dimensional model 2. 弱形式 Weak form 3.FEM 近似 FEM approximation 4. まとめ Summary.
一階述語論理 (first-order predicate logic) 一階述語論理入門 構文論(論理式の文 法) 意味論(論理式の解 釈) 認知システム論 知識と推論(4) 知識と論理でを組み合わせて問題を解決する.
MS-EXCEL、 OpenCalcを 用いた表計算
プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
人工知能特論2011 No.4 東京工科大学大学院 担当教員:亀田弘之.
人工知能特論2007 No.4 東京工科大学大学院 担当教員:亀田弘之.
(Rubyistのための) 超音速:ML入門
徳山豪 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野
プログラミング言語としてのR 情報知能学科 白井 英俊.
稲葉 一浩 SC22/C++WG May 2015 Review for N4399: “Working Draft, Technical Specification for C++ Extensions for Concurrency” 稲葉 一浩
ソフトウェア基礎科学 授業資料: 論理関係(logical relations)のお話
2006/11/30 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎
情報基礎A 第10週 プログラミング入門 VBAの基本文法2 データ型・If ~Then~Else
情報基礎A 第7週 プログラミング入門 VBAの基本文法2 データ型・If ~Then~Else
Survey: A Type System for Certified Binaries
Natural Semantics 実行過程の、最初と最後の状態(state)の関係を考える。
コンパイラ演習 第12回 2006/1/26 大山 恵弘 佐藤 秀明.
条件式 (Conditional Expressions)
情報基礎A 第11週 プログラミング入門 VBAの基本文法3 配列・For~Next
2007/1/11 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎
米澤研究室 全体ミーティング 2010/12/22 M2 渡邊裕貴.
ML 演習 第 7 回 新井淳也、中村宇佑、前田俊行 2011/05/31.
プログラミング言語論 第12回 関数型プログラミング 情報工学科 篠埜 功.
データ構造と アルゴリズム 第四回 知能情報学部 新田直也.
Solving Shape-Analysis Problems in Languages with Destructive Updating
テキストボックス、チェックボックス×2、コマンドボタンを配置する。 コマンドボタンに機能を与える
プログラミング言語入門 手続き型言語としてのJava
“Purely Functional Data Structures” セミナー
プログラミング言語論プログラミング言語論 プログラムの意味論 水野嘉明
暗黙的に型付けされる構造体の Java言語への導入
電気・機械・情報概論 VBAプログラミング 第2回 2018年7月2日
アルゴリズムとデータ構造 補足資料5-2 「サンプルプログラムsetop.c」
コンパイラ 2012年11月15日
Where is Wumpus Propositional logic (cont…) Reasoning where is wumpus
Excel 2002,2003基本12 情報関数.
国立情報学研究所 ソフトウェア研究系 助教授/
 型推論1(単相型) 2007.
依存型で型付けされた 副作用のある関数のための 型保存コンパイラ
Embedding CHR in LMNtal
データ構造と アルゴリズム 第五回 知能情報学部 新田直也.
Structural operational semantics
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
 型推論3(MLの多相型).
統計ソフトウエアRの基礎.
Type Systems and Programming Languages
情報工学Ⅱ (第9回) 月曜4限 担当:北川 晃.
米澤研究室 全体ミーティング 2010/07/07 M2 渡邊裕貴.
国立情報学研究所 ソフトウェア研究系 助教授/
PROGRAMMING IN HASKELL
プログラミング言語論 第4回 文の翻訳 C言語の文 表明 Hoare論理
発表者: 稲葉 一浩 複雑ネットワーク・地図グラフ セミナー 2017/1/19
PROGRAMMING IN HASKELL
Eijiro Sumii and Naoki Kobayashi University of Tokyo
関数型言語の基礎 型なしl計算 型理論 構成的プログラミング GUIにあらわれる関数概念 PBD VL
18. Case Study : Imperative Objects
情報実習I (第6回) 木曜4・5限 担当:北川 晃.
PROGRAMMING IN HASKELL
全体ミーティング(6/3) 修士2年 飯塚 大輔.
型理論 ラッセルのパラドックス: 「集合の集合」は矛盾を引き起こす。 ラッセル、ホワイトヘッド 「プリンキピアマセマティカ」
データ構造と アルゴリズム 第四回 知能情報学部 新田直也.
全体ミーティング(9/15) 村田雅之.
オブジェクト指向言語論 第三回 知能情報学部 新田直也.
 型理論の初歩 2007 fall.
場合分け(If Then Else,Select Case) 繰返し(Do While) 繰返しその2(For Next)
プログラミング言語論 プログラミング言語論 演習7 解答と解説 演習7 解答と解説 1.
Static Enforcement of Security with Types
Presentation transcript:

Type Systems and Programming Languages ; chapter 13 “Reference” 2001/5/21 hamanaka

構成 導入 Typing Operational Semantics Store Typing Safety

導入

reference cellへの参照 参照先の中身: compounded type 可 store reference 5 λx.succ(x) {i=5, b=true}

reference への操作 allocation dereferencing assignment r = ref 5; ( r : Ref Nat ) dereferencing !r; ( 5 : Nat ) assignment r := 7; ( unit : Unit ) r = 5 !r

reference への操作 deallocation: 扱わない (例) let r = ref 0 in 型推論が困難 let s = r in free r; let t = ref true in t := false; succ(!s) deallocation: 扱わない 型推論が困難 runtime による garbage collection

alias 一つのセルへの複数の参照 型推論をややこしくする ( r:=1 ; r:= !s) ⇒ r:=!s unless r, s are aliases for the same cell プログラムを便利にもする sequencing, shared state, etc. r = 5 s = 7 aliases

reference の利用例 Sequencing に適合 ← assignment は Unit型 Shared State として利用 (λ_:Unit. !r) (r:= succ(!r)); ⇒ (r:=succ(!r); !r) Shared State として利用 c = ref 0; incc = λx:Unit.(c:=succ(!c); !c); decc = λx:Unit.(c:=pred(!c); !c); o = { i = incc, d = decc}; (: Object)

reference の利用例 Compounded Type への参照の利用 NatArray = Ref (Nat → Nat); newarray = λ_.Unit. (ref (λn:Nat.0)) as NatArray; lookup = λa:NatArray. λn:Nat. (!a) n; update = λa:NatArray. λm:Nat. λv:Nat. let oldf = !a in a:= (λn:Nat. if equal m n then v else oldf n);

Typing

Typing(仮) 型付け規則(仮) 別紙参照 実は、これでは不十分。後ほど修正。

Operational Semantics

location の導入 store(heap)を value の配列と抽象化 reference は location: reference は store location の集合の要素 store は location から value への部分関数  meta variable μ: μ(l) = v reference は location: store 配列の抽象index < value > 1 5 2 TRUE 3 λx.x location

Syntax including “store” ref 式が返す location を考慮  別紙参照

Operational Semantics including “store” single-step 評価 t → t’ ⇒ t | μ → t’ | μ’ 評価規則 including store    別紙参照

追加される semantics location に関する評価規則  別紙参照

Store Typing

location の型 型付け規則(仮)     別紙参照 問題点 非効率的: 型推論時にμ(l)の型計算 cyclicデータ: 型付け不可能

location の型 問題点 解決方法 非効率的: 型推論時にμ(l)の型計算 cyclicデータ: 型付け不可能 初回allocate時の型で固定⇒ Store Typing

Store Typing finite function: ∑ 型付け規則 location → 型 μ(store) を見ずにlocationの型付け可能 型付け規則   別紙参照

Safety

Safety progress theorem これまでと同様にして証明可能 preservation theorem 少し工夫必要

Progress Theorem 別紙参照

Preservation Theorem 別紙参照