HW5 Exercise 1 (60pts) M interpreter with a simple type system M. M. M.., M (simple type system). M, M. M., M.

Similar documents
λx.x (λz.λx.x z) (λx.x)(λz.(λx.x)z) (λz.(λx.x) z) Call-by Name. Normal Order. (λz.z)

기본자료형만으로이루어진인자를받아서함수를결과값으로반환하는고차함수 기본자료형과함수를인자와결과값에모두이용하는고차함수 다음절에서는여러가지예를통해서고차함수가어떤경우에유용한지를설명한다. 2 고차함수의 예??장에서대상체만바뀌고중간과정은동일한계산이반복될때함수를이용하면전체연산식을간 단


Homework 1 SNU , Fall 2012 Kwangkeun Yi Due: 9/14, 24:00 Exercise 1 리스트합 큰순서대로 (descending order) 나열된정수리스트두개를받아서하나의 순서리스트로만드는함수 merge: int lis

OCaml

Exercise (10pts) k-친수 일반적으로 k진수(k > 1)는 다음과 같이 표현한다. d0 dn 여기서 di {0,, k 1}. 그리고 d0 dn 은 크기가 d0 k dn k n 인 정수를 표현한다. 이것을 살짝 확장해서 k친수 를 다음과 같이 정의

SIGPLwinterschool2012

제4장 기본 의미구조 (Basic Semantics)

03장.스택.key



Homework 2 SNU , Fall 2015 Kwangkeun Yi due: 9/30, 24:00 Exercise 1 (10pts) k- 친수 일반적으로 k 진수 (k > 1) 는다음과같이표현한다. d 0 d n 여기서 d i {0,, k 1}. 그리

SNU =10100 =minusby by1000 ÇÁto0.03exÇÁto0.03exÇÁ=10100 =minusby by1000 ·Îto0.03ex·Îto0.03ex·Î=10100 =minusby by1000 ±×to0.

slide2

Microsoft Word - ExecutionStack

PowerPoint 프레젠테이션

A4 용지총 4 페이지를넘기지말것. 반드시컴퓨터로출력해서제출. 10/28( 월 ) 수업시간에제출. No delay acceptable. Exercise 2 (40pts) SM5 K--( 교재 4.3) 프로그램들을가상기계 (abstract machine) 인 SM5에서실

untitled

SNU =10100 =minusby by1000 ÇÁto0.03exÇÁto0.03exÇÁ=10100 =minusby by1000 ·Îto0.03ex·Îto0.03ex·Î=10100 =minusby by1000 ±×to0.

PowerPoint 프레젠테이션

1

Modern Javascript

비긴쿡-자바 00앞부속

chap10.PDF

10주차.key

chap01_time_complexity.key

PowerPoint 프레젠테이션

untitled

Homework 3 SNU , 2011 가을이광근 Program Due: 10/10, 24:00 Essay Due: 10/12, 15:30 이번숙제의목적은 : 수업시간에살펴본, 상식적인명령형언어의정확한정의를이해하고그실행기를구현해보기. 상식적인수준에서디자인

Microsoft PowerPoint - semantics

Interstage5 SOAP서비스 설정 가이드

歯엑셀모델링

Semantic Consistency in Information Exchange

int main(void) int a; int b; a=3; b=a+5; printf("a : %d \n", a); printf("b : %d \n", b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf(" a : %x \

SNU =10100 =minusby by1000 ÇÁto0.03exÇÁto0.03exÇÁ=10100 =minusby by1000 ·Îto0.03ex·Îto0.03ex·Î=10100 =minusby by1000

Microsoft Word - FunctionCall

12-file.key

많이 이용하는 라면,햄버그,과자,탄산음료등은 무서운 병을 유발하고 비만의 원인 식품 이다. 8,등겨에 흘려 보낸 영양을 되 찾을 수 있다. 도정과정에서 등겨에 흘려 보낸 영양 많은 쌀눈과 쌀껍질의 영양을 등겨를 물에 우러나게하여 장시간 물에 담가 두어 영양을 되 찾는다

T100MD+

untitled

yessign Version 3.1 (yessign). ccopyright 2009 yessign ALL RIGHTS RESERVED

PL10

Microsoft PowerPoint - a10.ppt [호환 모드]

SNU =10100 =minusby by1000 ÇÁto0.03exÇÁto0.03exÇÁ=10100 =minusby by1000 ·Îto0.03ex·Îto0.03ex·Î=10100 =minusby by1000 ±×to0.

thesis

SMB_ICMP_UDP(huichang).PDF

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

e hwp

Microsoft PowerPoint - 30.ppt [호환 모드]


해양모델링 2장5~ :26 AM 페이지6 6 오픈소스 소프트웨어를 이용한 해양 모델링 물리적 해석 식 (2.1)의 좌변은 어떤 물질의 단위 시간당 변화율을 나타내며, 우변은 그 양을 나타낸 다. k 5 0이면 C는 처음 값 그대로 농

untitled

Index Process Specification Data Dictionary

C프로-3장c03逞풚

untitled

Observational Determinism for Concurrent Program Security

- - yessign Version 3.5 (yessign)

C# Programming Guide - Types

Motor

[ 융합과학 ] 과학고 R&E 결과보고서 뇌파를이용한곤충제어 연구기간 : ~ 연구책임자 : 최홍수 ( 대구경북과학기술원 ) 지도교사 : 박경희 ( 부산일과학고 ) 참여학생 : 김남호 ( 부산일과학고 ) 안진웅 ( 부산일과학고 )

chap x: G입력

PowerPoint 프레젠테이션

Microsoft PowerPoint - lec2.ppt

SNU =10100 =minusby by1000 ÇÁto0.03exÇÁto0.03exÇÁ=10100 =minusby by1000 ·Îto0.03ex·Îto0.03ex·Î=10100 =minusby by1000 ±×to0.03ex±×to0.03ex±×=10100 =minusby by1000 ·¡to0.03ex·¡to0.03ex·¡=10100 =minusby by1000 ¹Öto0.03ex¹Öto0.03ex¹Ö =10100 =minusby by1000 ¿øto0.03ex¿øto0.03ex¿ø=10100 =minusby by1000 ¸®to0.03ex¸®to0.03ex¸®(Principles of Programming) Part I

Chapter 4. LISTS

07 자바의 다양한 클래스.key

Microsoft PowerPoint - PL_03-04.pptx

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

歯MDI.PDF

Gray level 변환 및 Arithmetic 연산을 사용한 영상 개선

SRC PLUS 제어기 MANUAL

슬라이드 1

nonpara6.PDF

Javascript.pages

cat_data3.PDF


example code are examined in this stage The low pressure pressurizer reactor trip module of the Plant Protection System was programmed as subject for

untitled

정답-1-판매용

PowerPoint 프레젠테이션

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

CPX-E-EC_BES_C_ _ k1

untitled

¼º¿øÁø Ãâ·Â-1

final_thesis

DocsPin_Korean.pages

Web Application Hosting in the AWS Cloud Contents 개요 가용성과 확장성이 높은 웹 호스팅은 복잡하고 비용이 많이 드는 사업이 될 수 있습니다. 전통적인 웹 확장 아키텍처는 높은 수준의 안정성을 보장하기 위해 복잡한 솔루션으로 구현

9

untitled

Microsoft PowerPoint - es-arduino-lecture-03

UI TASK & KEY EVENT

ThisJava ..

Java

歯9장.PDF

4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf("hihi\n"); } warning: conflicting types for functiona

No Slide Title

컴파일러

Transcription:

오늘할것 5 6

HW5 Exercise 1 (60pts) M interpreter with a simple type system M. M. M.., M (simple type system). M, M. M., M.

Review: 5-2 7 7 17 5 4 3 4 OR 0 2 1 2 ~20 ~40 ~60 ~80 ~100

M 언어 e ::= const constant id identifier fn id => e function e e application let bind in e end local block if e then e else e branch e op e infix binary operation read input write e output (e) malloc e allocation e := e assignment!e bang, dereference e ; e sequence (e,e) pair e.1 first component e.2 second component bind ::= val id = e rec id = fn id => e op ::= + - = and or const ::= true false string num id string num

M

Dynamic Semantics [Const] σ, M const const in Val, M [Id] σ(x) = v σ, M x v, M [Fun] σ, M fn x => e λx.e, σ, M [App] σ, M e 1 λx.e, σ, M σ, M e 2 v 2, M σ [x v 2 ], M e v, M σ, M e 1 e 2 v, M [RecApp] σ, M e 1 fλx.e, σ, M σ, M e 2 v 2, M σ [x v 2 ][f fλx.e, σ ], M e v, M σ, M e 1 e 2 v, M [Let] σ, M e 1 v 1, M σ[x v 1 ], M e 2 v, M σ, M let x = e 1 in e 2 end v, M [RecLet] σ, M e 1 λx.e, σ, M σ[f fλx.e, σ ], M e 2 v, M σ, M let rec f = e 1 in e 2 end v, M...

Static Semantics [Num] Γ n : i Type τ ::= i integer type b boolean type s string type τ τ pair type τ loc location type τ τ function type [Bool] Γ true : b Γ false : b [String] [Fun] [App] Γ string : s Γ[x τ 1 ] e : τ 2 Γ fn x => e : τ 1 τ 2 Γ e 1 : τ 1 τ 2 Γ e 2 : τ 1 Γ e 1 e 2 : τ 2 [Let] Γ e 1 : τ 1 Γ[x τ 1 ] e 2 : τ 2 Γ let x = e 1 in e 2 end : τ 2...

추론알고리즘구현

타입시스템 Γ n : ι Γ(x) =τ Γ x : τ Γ + x : τ 1 E : τ 2 Γ λx.e : τ 1 τ 2 Γ E 1 : τ 1 τ 2 Γ E 2 : τ 1 Γ E 1 E 2 : τ 2 Γ E 1 : ι Γ E 2 : ι Γ E 1 +E 2 : ι

타입체커구현? E : τ E τ

구현이간단할까? ( 재귀적으로가능할까?) Γ n : ι Γ (x) =τ Γ x : τ Γ E 1 : τ 1 τ 2 Γ E 2 : τ 1 Γ E 1 E 2 : τ 2 Γ + x : τ 1 E : τ 2 Γ λx.e : τ 1 τ 2

타입을명시하면가능 Γ n : ι Γ (x) =τ Γ x : τ Γ E 1 : τ 1 τ 2 Γ E 2 : τ 1 Γ E 1 E 2 : τ 2 Γ + x : τ 1 E : τ 2 Γ λx : τ 1.E : τ 1 τ 2

타입유추알고리즘

방정식도출 (λx. x ) 1 1 3 2 4 α 1 = α x α 2 = α β α 3 = ι α = α 3 β = α x α x = α α 4 = β

연립방정식세우기 TyEqn u τ =τ 타입방정식 u u 연립 Type τ α TyVar 타입변수 ι τ τ V (Γ, n, τ) = τ =ι V (Γ, x, τ) = τ =τ if x : τ Γ V (Γ, E 1 + E 2, τ) = τ =ι V (Γ, E 1, ι) V (Γ, E 2, ι) V (Γ, λx.e, τ) = τ = α 1 α 2 V (Γ + x : α 1, e, α 2 ) new α 1,α 2 V (Γ, E 1 E 2, τ) = V (Γ, E 1, α τ) V (Γ, E 2, α) new α

연립방정식세우기예 V (, (λx.x) 1, τ) = V (, λx.x, α τ) V (, 1, α) new α = α τ =. α 1 α 2 V (x : α 1,x,α 2 ) α =. ι = α τ.. = α 1 α 2 α 1 = α 2 α =. ι new α 1, α 2 V (Γ, n, τ) = τ =ι V (Γ, x, τ) = τ =τ if x : τ Γ V (Γ, E 1 + E 2, τ) = τ =ι V (Γ, E 1, ι) V (Γ, E 2, ι) V (Γ, λx.e, τ) = τ = α 1 α 2 V (Γ + x : α 1, e, α 2 ) new α 1,α 2 V (Γ, E 1 E 2, τ) = V (Γ, E 1, α τ) V (Γ, E 2, α) new α

동일화알고리즘 unify(τ, τ ) : TyVar fin Type unify(ι, ι) = unify(α, τ) or unifty(τ, α) = {α τ} if α does not occur in τ unify(τ 1 τ 2, τ 1 τ 2) = let S = unify(τ 1, τ 1) in S S unify( ) = fail S = unify(sτ 2, Sτ 2)

타입

치환 ex) S = {α1 int, α2 int} : ( ) ex) {α1 int, α2 bool} (α1 α2) = int int : type type

치환의생성 / 합성 (x) (tau) ( ) g @@ f

cf) 하나만바꾸는치환? {α β,β α} (α) = β {β α}{α β} (α) = α unify(τ, τ ) : TyVar fin Type unify(ι, ι) = unify(α, τ) or unifty(τ, α) = {α τ} if α does not occur in τ unify(τ 1 τ 2, τ 1 τ 2) = let S = unify(τ 1, τ 1) S = unify(sτ 2, Sτ 2) in S S unify( ) = fail

타입환경

(unification algorithm)

unify(ι, ι) = unify(α, τ) or unifty(τ, α) = {α τ} if α does not occur in τ unify(τ 1 τ 2, τ 1 τ 2) = let S = unify(τ 1, τ 1) S = unify(sτ 2, Sτ 2) in S S unify( ) = fail

타입방정식확장 TyEqn u τ =τ 타입방정식 u u 연립 u u? Type τ α TyVar 타입변수 ι τ τ [Write] [Op] Γ e : τ τ = i, b, or s Γ write e : τ Γ e 1 : τ Γ e 2 : τ τ = i, b, s, or l Γ e 1 = e 2 : b

cf) 간단한경우면충분, (u u) ((u u) u) (u u) (u u) u

방정식도출 constraints

방정식도출

방정식풀기 let val x = 1 in write x end Or (a1, [string,bool,int]) ^ U (a1, a2) ^ U (a2, int) U(a1,string) ^ U (a1, a2) ^ U (a2, int) U(a1,bool) ^ U (a1, a2) ^ U (a2, int) U(a1,int) ^ U (a1, a2) ^ U (a2, int)

순서변경 Or (a1, [string,bool,int]) ^ U (a1, a2) ^ U (a2, int) vs. U (a1, a2) ^ U (a2, int) ^ Or (a1, [string,bool,int])

방정식풀기

SNU 4190.310, 2011 HW6 Due: 6/3(Fri), 24:00 Exercise 1 (50pts) M 1 M, (simple type system) let- (let-polymorphic type system).,, (polymorphic function, ). Homework 6,, let-. SNU 4190.310, 2011 TA M let-. (* example 1: polymorphic toys *) Due: 6/3(Fri), 24:00 val add = fn x => x.1 + x.1 let val I = fn x => x val const = fn n => 10 in

,, let- TA M let- (* example 1: polymorphic toys *) let val I = fn x => x val add = fn x => x.1 + x.1 val const = fn n => 10 in I I; add(1, true) + add(2, "snu 310 fall 2009"); const 1 + const true + const "kwangkeun yi" end (* example 2: polymorphism with imperatives *) 1

add(1, true) + add(2, "snu 310 fall 2009"); const 1 + const true + const "kwangkeun yi" end (* example 2: polymorphism with imperatives *) 1 let val f = fn x => malloc x. in let val a = f 10 val b = f "pl" val c = f true in a :=!a + 1; b := "hw7"; c :=!c or false end end 1

(* example 3: polymorphic swap *) let val swap = fn order_pair => if (order_pair.1) (order_pair.2) then (order_pair.2) else (order_pair.2.2, order_pair.2.1) in swap(fn pair => pair.1 + 1 = pair.2, (1,2)); swap(fn pair => pair.1 or pair.2, (true, false)) end

(* S K I combinators *) let val I = fn x => x val K = fn x => fn y => x val S = fn x => fn y => fn z => (x z) (y z) in S (K (S I)) (S (K K) I) 1 (fn x => x+1) end