上海交通大学试卷 ( A 卷 ) ( 2015 至 2016 学年第 2 学期 )
|
|
- Esther Thomas
- 6 years ago
- Views:
Transcription
1 上海交通大学试卷 ( A 卷 ) ( 2015 至 2016 学年第 2 学期 ) 班级号 (class) 学号 (id) 姓名 (name) 课程名称 程序语言理论 Theory of Programming Languages 成绩 (score) 1. (14 points) (a) Please give the value of a0, a1 after running the following Ocaml program: let f0 x = x + x + x let x0 = ref 3 let a0 = f0 (x0:=!x0+1;!x0) let f1 x = x() + x() + x() let x1 = ref 3 let a1 = f1 (fun () -> (x1:=!x1+1;!x1)) (b) Please argue the differences between call-by-value and call-by-name strategies. (c) Can you give one piece of Ocaml code that diverges(does not terminate) by using call-by-value strategy, but terminates by using call-by-name strategy? (d) Assume we have the following evaluation rules for untyped λ-calculus. Please select the rules for call-by-value strategy; and select those for call-by-name strategy. β-red1 (λx.t1 ) t 2 [x t 2 ] t 1 β-red2 (λx.t) v [x v] t App1 t 1 t 1 t 1 t 2 t 1 t 2 App2 t 2 t 2 t 1 t 2 t 1 t 2 App3 t 2 t 2 v 1 t 2 v 1 t 2 1
2 我承诺, 我将严格遵守考试纪律 承诺人 : 题号得分批阅人 ( 流水阅卷教师签名处 ) 总分 2. (12 points) 2. (12 ) Given This problem the subtyping considers rules this in Ruby Fig. class: 1 on page 9. class A (a) How many attr_accessor different supertypes :x does {a : Top, b : Top} have? (b) Can youdef find m1 an infinite descending chain in the subtype relation? i.e., an infinite sequence of types = 4 0, S 1,... such that for any i, S i+1 <: S i. (c) What about end an infinite ascending chain? (d) If we add def a new m2 typing rule m1 > 4 please figure end out the relation between Nat <: Float def m3 = 4 1 = {a : Nat Float, b : {}} > 4 T end 2 = {a : Float Nat, b : {c : Nat}} If T 1 andef T 2 has m4 subtyping relation, give the derivation tree; If not, explain the reason briefly. self.x = > 4 end end 1) (4 ) Is it possible to define a class B such that evaluating B.new.m2 causes the method m2 defined in class A (not an override of m2) to return true? If so, define class B as such, else explain why it is not possible. 2) (4 ) Is it possible to define a class B such that evaluating B.new.m3 causes the method m3 defined in class A (not an override of m3) to return true? If so, define class B as such, else explain why it is not possible. 3) (4 ) Is it possible to define a class B such that evaluating B.new.m4 causes the method 2 m4 defined in class A (not an override of m4) to return true? If so, define class B as such, else explain why it is not possible.
3 A Name:, Id: 3. (14 points) Recursive type is very powerful, it can make infinite data. This problem consider a typed λ-calculus with variant types, pairs, recursive types, fix, Unit, and Nat. Please refer to Fig. 2 on page 9 for syntax of variants. (a) Define a type NatList for a list of natural numbers where each list is either a nil of unit or cons of a pair of type Nat NatList. (b) Give a value of type NatList that has two elements 0 and succ0, and 0 is the head of this list. (c) Define a function hd of type NatList Nat that returns the head of a list. Return 0 if the given list is nil. (d) Define a function sum of type NatList Nat that returns the summation of all the numbers in a list. You can use (plus m n) directly for m + n. 3
4 4. (10 points) Suppose a generating function F on the universe {a, b, c, d} is defined by the following inference rules: c d b c b d c a A set S is F -closed if F (S) S; it is F -consistent if S F (S); it is a fixed point if S = F (S). (a) List all the F -closed sets. (b) List all the F -consistent sets. (c) What is the least fixed point of F? What is the greatest fixed point of F? 4
5 A Name:, Id: 5. (12 points) This problem uses System F extended with addition. Please refer to Fig. 3 on page 10 for definitions of System F. (a) Give the appropriate System F typing rule(s) and evaluation rule(s) for addition expressions of the form t 1 + t 2. (This should be easy.) (b) Consider a typing context Γ = x : X.X X: i. What does T need to be for the program fragment x [T] (λy : Nat.y + 7) 11 to typecheck? ii. Given your choice for T, what type does x [T] (λy : Nat.y + 7) have? Give a typing derivation for Γ x [T] (λy : Nat.y + 7). (c) Given your choice for T. If v is an arbitrary value of type X.X X, then what might v [T] (λy : Nat.y + 7) 11 evaluate to? (d) If v is an arbitrary value of type (Nat Nat) Nat Nat then what might v (λy : Nat.y + 7) 11 evaluate to? 5
6 6. (12 points) Assume we have a typed programming language formally defined by a small-step operational semantics and a typing judgment. Assume the Preservation and Progress Theorems hold for this language. Preservation: If t : T and t t, then t : T. Progress: If t : T for some T. Then either t is a value or else there is some t with t t. Consider each question below separately and explain your answers briefly. (a) Suppose we change the operational semantics by adding a new inference rule. i. Is it possible that Preservation does not hold any more? ii. Is it possible that Progress does not hold any more? (b) Suppose we change the type system by adding a new typing rule. i. Is it possible that Preservation does not hold any more? ii. Is it possible that Progress does not hold any more? 6
7 A Name:, Id: 7. (10 points) This problem considers to translate a λ-term to the corresponding de Bruijn term. Here are some definitions for your reference. A naming context Γ = x n, x n 1,, x 1, x 0 assigns to each x i the de Bruijn index i. The d-place shift of a term t about cutoff c, written d c (t) is defined as d c (k) = { k if k < c k + d if k c d c (λ.t 1 ) = λ. d c+1 (t 1 ) d c (t 1 t 2 ) = d c (t 1 ) d c (t 2 ) The substitution of a term s for variable number j in a term t, written [j s]t, is defined as follows: { s if k = j [j s]k = k otherwise [j s](λ.t 1 ) = λ.[j s]t 1 [j s](t 1 t 2 ) = [j s]t 1 [j s]t 2 The β-reduction rule on de Bruijn terms is: (λ.t 1 ) t 2 1 [0 1 t 2 ]t 1 (a) Let Γ = wa, give the nameless representation of (λb.w (λa.b a)) (λb.b a). (b) Show the computation (β-reduction) of this de Bruijn term step by step. 7
8 8. (16 points) This problem consider a simple programming language on booleans. Syntax: t::= true false if t then t else t diverg v::= true false Evaluation: E-IfTrue if true then t2 else t 3 t 2 E-IfFalse if false then t2 else t 3 t 3 E-If t 1 t 1 if t 1 then t 2 else t 3 if t 1 then t 2 else t 3 E-Diverg diverg diverg Below is one possible encoding from this small language to untyped call-by-value λ- calculus. true 1 false 1 if t_1 then t_2 else t_3 1 diverg 1 def = λx.λy.x (1) def = λx.λy.y (2) def = t 1 1 t 2 1 t 3 1 (3) def = (λx.xx)(λx.xx) (4) An encoding is termination preserving if for any term t, t terminates if and only if t terminates. (a) Give a counter example to show that the above encoding 1 is NOT termination preserving; (b) Give a termination preserving encoding 2 from this small language to untyped call-by-value λ-calculus, and prove it. (c) If we want to keep the encoding 1, please modify the evaluation rules for this small language to make 1 termination preserving, and prove it. 8
9 A References 16.1 Algorithmic Subtyping 211 Figure 1: Subtype relation with records {} <: Extends 15-1 and 15-3 S <: S S<:U U<:T S<:T S <: Top (S-Refl) (S-Trans) (S-Top) T 1 <:S 1 S 2 <:T 2 S 1 S 2 <:T 1 T 2 {l i } {k j j 1..m } k j =l i impliess j <:T i {k j :S j j 1..m }<:{l i :T i } (S-Arrow) (S-Rcd) 136 Figure 16-1: Subtype relation with records (compact version) 11 Simple Extensions Figure 2: Variants <> Extendsλ (9-1) derivations for records involving combinations of depth, width, and permutation subtyping. Before we can drop S-Trans, we must first add a rule that New syntactic forms bundles depth, width, and permutation subtyping t 0 t into 0 one: t ::=... terms: (E-Case) j 1..m case t {l i } {k j } k j =l i impliess 0 of <l i =x <l=t> as T tagging j <:T i > t i i case t (S-Rcd) j 1..m 0 case tof <l i =x i > t i {k j :S case j }<:{l i :T i } of<l i=x i > t i t i t i T ::= Lemma: If S <: T is derivable types: from the subtyping rules including S-RcdDepth, <l i =t i > as T <l i =t (E-Variant) i > as T <l i :T i S-Rcd-Width, > type and of S-Rcd-Perm variants (but not S-Rcd), then it can also be derived using S-Rcd (and not S-RcdDepth, New typing S-Rcd-Width, rules or S-Rcd-Perm), Γand t:t vice New evaluation rules versa. t t Γ t j :T j case (<l j =v j > ast) Proof: of <l Straightforward i =x i > t i induction Γ <l on derivations. j =t j >as <l i :T i >:<l i :T i > [x j v j ]t j (T-Variant) Lemma justifies eliminating rules S-RcdDepth, S-Rcd-Width, and (E-CaseVariant) S-Rcd-Perm in favor of S-Rcd. Figure 16-1 Γ t summarizes 0 :<l i :T i the> resulting system. Next, we show that, in the systemfor of eachi Figure 16-1, Γ,x i the :T i reflexivity t i :T and transitivity rules are inessential. Γ case t 0 of <l i =x i > t i (T-Case) :T Lemma: Figure 11-11: Variants 1. S<:S can be derived for every type S without using S-Refl. 2. If S<:T is derivable, then it can be derived without using S-Trans Variants Proof: Exercise [Recommended, ]. Binary sums generalize to labeled variants just as products generalize to labeled records. [ ]: IfInstead we addoft the 1 type +T 2, we Bool, write<l how do 1 :Tthese 1,l 2 :T properties 2 >, wherel change? 1 andl 2 are Exercise field labels. Instead of inl tas T 1 +T 2, we write <l 1 =t>as <l 1 :T 1,l 2 :T 2 >. This Andbrings insteadusof tolabeling the definition the branches of the algorithmic of the casesubtype with inl relation. and inr, we use the same labels as the corresponding sum type. With these generalizations, Definition: The algorithmic subtyping relation is the least relation on types thegetaddr example from the previous section becomes: closed under the rules in Figure Addr = <physical:physicaladdr, virtual:virtualaddr>; a = <physical=pa> as Addr; a : Addr 9 getname = λa:addr. case a of <physical=x> x.firstlast <virtual=y> y.name;
10 23.3 System F 343 Figure 3: System F Based onλ (9-1) Syntax t ::= x λx:t.t t t λx.t t [T] terms: variable abstraction application type abstraction type application Evaluation t t t 1 t 1 t 1 t 2 t 1 t 2 t 2 t 2 v 1 t 2 v 1 t 2 (E-App1) (E-App2) (λx:t 11.t 12 ) v 2 [x v 2 ]t 12 (E-AppAbs) v ::= λx:t.t λx.t values: abstraction value type abstraction value t 1 t 1 t 1 [T 2 ] t 1 [T 2] (E-TApp) T ::= X T T X.T types: type variable type of functions universal type (λx.t 12 )[T 2 ] [X T 2 ]t 12 (E-TappTabs) Typing x:t Γ Γ x:t Γ t:t (T-Var) Γ ::= Γ,x:T Γ,X contexts: empty context term variable binding type variable binding Γ,x:T 1 t 2 :T 2 Γ λx:t 1.t 2 :T 1 T 2 Γ t 1 :T 11 T 12 Γ t 2 :T 11 Γ t 1 t 2 :T 12 (T-Abs) (T-App) Γ,X t 2 :T 2 Γ λx.t 2 : X.T 2 (T-TAbs) Γ t 1 : X.T 12 Γ t 1 [T 2 ]:[X T 2 ]T 12 (T-TApp) Figure 23-1: Polymorphic lambda-calculus (System F) is to keep track of scopes and make sure that the same type variable is not added twice to a context. In later chapters, we will annotate type variables with information of various kinds, such as bounds (Chapter 26) and kinds (Chapter 29). Figure 23-1 shows the complete definition of the polymorphic lambdacalculus, with differences fromλ highlighted. As usual, this summary de- 10 fines just the pure calculus, omitting other type constructors such as records,
11 11
上海交通大学试卷 ( A 卷 ) ( 2015 至 2016 学年第 2 学期 )
上海交通大学试卷 ( A 卷 ) ( 2015 至 2016 学年第 2 学期 ) 班级号 (class) 学号 (id) 姓名 (name) 课程名称 程序语言理论 Theory of Programming Languages 成绩 (score) 1. (14 points) (a) Please give the value of a0, a1 after running the following
More informationCMSC 336: Type Systems for Programming Languages Lecture 5: Simply Typed Lambda Calculus Acar & Ahmed January 24, 2008
CMSC 336: Type Systems for Programming Languages Lecture 5: Simply Typed Lambda Calculus Acar & Ahmed January 24, 2008 Contents 1 Solution to the Exercise 1 1.1 Semantics for lambda calculus.......................
More informationCIS 500 Software Foundations Midterm I
CIS 500 Software Foundations Midterm I October 11, 2006 Name: Student ID: Email: Status: Section: registered for the course not registered: sitting in to improve a previous grade not registered: just taking
More informationFormal Systems and their Applications
Formal Systems and their Applications Dave Clarke (Dave.Clarke@cs.kuleuven.be) Acknowledgment: these slides are based in part on slides from Benjamin Pierce and Frank Piessens 1 Course Overview Introduction
More informationProgramming Languages Fall 2014
Programming Languages Fall 2014 Lecture 7: Simple Types and Simply-Typed Lambda Calculus Prof. Liang Huang huang@qc.cs.cuny.edu 1 Types stuck terms? how to fix it? 2 Plan First I For today, we ll go back
More informationTypes and Programming Languages. Lecture 5. Extensions of simple types
Types and Programming Languages Lecture 5. Extensions of simple types Xiaojuan Cai cxj@sjtu.edu.cn BASICS Lab, Shanghai Jiao Tong University Fall, 2016 Coming soon Simply typed λ-calculus has enough structure
More informationFall 2013 Midterm Exam 10/22/13. This is a closed-book, closed-notes exam. Problem Points Score. Various definitions are provided in the exam.
Programming Languages Fall 2013 Midterm Exam 10/22/13 Time Limit: 100 Minutes Name (Print): Graduate Center I.D. This is a closed-book, closed-notes exam. Various definitions are provided in the exam.
More informationCSE-321 Programming Languages 2012 Midterm
Name: Hemos ID: CSE-321 Programming Languages 2012 Midterm Prob 1 Prob 2 Prob 3 Prob 4 Prob 5 Prob 6 Total Score Max 14 15 29 20 7 15 100 There are six problems on 24 pages in this exam. The maximum score
More informationPart III. Chapter 15: Subtyping
Part III Chapter 15: Subtyping Subsumption Subtype relation Properties of subtyping and typing Subtyping and other features Intersection and union types Subtyping Motivation With the usual typing rule
More informationSubsumption. Principle of safe substitution
Recap on Subtyping Subsumption Some types are better than others, in the sense that a value of one can always safely be used where a value of the other is expected. Which can be formalized as by introducing:
More informationCSE-321 Programming Languages 2011 Final
Name: Hemos ID: CSE-321 Programming Languages 2011 Final Prob 1 Prob 2 Prob 3 Prob 4 Prob 5 Prob 6 Total Score Max 15 15 10 17 18 25 100 There are six problems on 18 pages in this exam, including one extracredit
More informationPart III Chapter 15: Subtyping
Part III Chapter 15: Subtyping Subsumption Subtype relation Properties of subtyping and typing Subtyping and other features Intersection and union types Subtyping Motivation With the usual typing rule
More informationCostly software bugs that could have been averted with type checking
Type Checking Class Notes from Lectures 6 and 7 Lahav Yeffet and Ori Folger The material in these lectures is based on the textbook Types and Programming Languages by Benjamin Pierce. Here is a list of
More informationCSE-321 Programming Languages 2010 Final
Name: Hemos ID: CSE-321 Programming Languages 2010 Final Prob 1 Prob 2 Prob 3 Prob 4 Prob 5 Prob 6 Total Score Max 18 28 16 12 36 40 150 There are six problems on 16 pages, including two work sheets, in
More informationLambda Calculus. Type Systems, Lectures 3. Jevgeni Kabanov Tartu,
Lambda Calculus Type Systems, Lectures 3 Jevgeni Kabanov Tartu, 13.02.2006 PREVIOUSLY ON TYPE SYSTEMS Arithmetical expressions and Booleans Evaluation semantics Normal forms & Values Getting stuck Safety
More informationMutable References. Chapter 1
Chapter 1 Mutable References In the (typed or untyped) λ-calculus, or in pure functional languages, a variable is immutable in that once bound to a value as the result of a substitution, its contents never
More informationλ calculus is inconsistent
Content Rough timeline COMP 4161 NICTA Advanced Course Advanced Topics in Software Verification Gerwin Klein, June Andronick, Toby Murray λ Intro & motivation, getting started [1] Foundations & Principles
More information1 Introduction. 3 Syntax
CS 6110 S18 Lecture 19 Typed λ-calculus 1 Introduction Type checking is a lightweight technique for proving simple properties of programs. Unlike theorem-proving techniques based on axiomatic semantics,
More information4.5 Pure Linear Functional Programming
4.5 Pure Linear Functional Programming 99 4.5 Pure Linear Functional Programming The linear λ-calculus developed in the preceding sections can serve as the basis for a programming language. The step from
More informationType Systems. Parametric Polymorphism. 1. Recall Let-Polymorphism. 1. Recall Let-Polymorphism. Lecture 9 Dec. 15th, 2004 Sebastian Maneth
Today Parametric Polymorphism Type Systems Lecture 9 Dec. 15th, 2004 Sebastian Maneth 1. Recall Let-Polymorphism 4. System F-sub 5. Properties of F-sub http://lampwww.epfl.ch/teaching/typesystems/2004
More informationThe University of Nottingham SCHOOL OF COMPUTER SCIENCE A LEVEL 4 MODULE, SPRING SEMESTER MATHEMATICAL FOUNDATIONS OF PROGRAMMING ANSWERS
The University of Nottingham SCHOOL OF COMPUTER SCIENCE A LEVEL 4 MODULE, SPRING SEMESTER 2012 2013 MATHEMATICAL FOUNDATIONS OF PROGRAMMING ANSWERS Time allowed TWO hours Candidates may complete the front
More informationCS 6110 S11 Lecture 25 Typed λ-calculus 6 April 2011
CS 6110 S11 Lecture 25 Typed λ-calculus 6 April 2011 1 Introduction Type checking is a lightweight technique for proving simple properties of programs. Unlike theorem-proving techniques based on axiomatic
More informationLambda Calculi With Polymorphism
Resources: The slides of this lecture were derived from [Järvi], with permission of the original author, by copy & x = 1 let x = 1 in... paste or by selection, annotation, or rewording. [Järvi] is in turn
More informationCIS 500 Software Foundations Fall October 2
CIS 500 Software Foundations Fall 2006 October 2 Preliminaries Homework Results of my email survey: There was one badly misdesigned (PhD) problem and a couple of others that were less well thought through
More informationType Systems. Pierce Ch. 3, 8, 11, 15 CSE
Type Systems Pierce Ch. 3, 8, 11, 15 CSE 6341 1 A Simple Language ::= true false if then else 0 succ pred iszero Simple untyped expressions Natural numbers encoded as succ succ
More informationDependent Object Types - A foundation for Scala s type system
Dependent Object Types - A foundation for Scala s type system Draft of September 9, 2012 Do Not Distrubute Martin Odersky, Geoffrey Alan Washburn EPFL Abstract. 1 Introduction This paper presents a proposal
More informationThe Untyped Lambda Calculus
Resources: The slides of this lecture were derived from [Järvi], with permission of the original author, by copy & x = 1 let x = 1 in... paste or by selection, annotation, or rewording. [Järvi] is in turn
More informationCSE-321 Programming Languages 2010 Midterm
Name: Hemos ID: CSE-321 Programming Languages 2010 Midterm Score Prob 1 Prob 2 Prob 3 Prob 4 Total Max 15 30 35 20 100 1 1 SML Programming [15 pts] Question 1. [5 pts] Give a tail recursive implementation
More informationLecture 9: Typed Lambda Calculus
Advanced Topics in Programming Languages Spring Semester, 2012 Lecture 9: Typed Lambda Calculus May 8, 2012 Lecturer: Mooly Sagiv Scribe: Guy Golan Gueta and Shachar Itzhaky 1 Defining a Type System for
More informationCSE-321 Programming Languages 2014 Final
Name: Hemos ID: CSE-321 Programming Languages 2014 Final Problem 1 Problem 2 Problem 3 Problem 4 Problem 5 Problem 6 Total Score Max 15 12 14 14 30 15 100 There are six problems on 12 pages in this exam.
More informationProgramming Languages Lecture 15: Recursive Types & Subtyping
CSE 230: Winter 2008 Principles of Programming Languages Lecture 15: Recursive Types & Subtyping Ranjit Jhala UC San Diego News? Formalize first-order type systems Simple types (integers and booleans)
More informationType Systems Winter Semester 2006
Type Systems Winter Semester 2006 Week 4 November 8 November 15, 2006 - version 1.1 The Lambda Calculus The lambda-calculus If our previous language of arithmetic expressions was the simplest nontrivial
More informationCIS 500 Software Foundations Midterm II Answer key November 16, 2005
CIS 500 Software Foundations Midterm II Answer key November 16, 2005 Simply typed lambda-calculus The following questions refer to the simply typed lambda-calculus with booleans and error handling. The
More informationThe Untyped Lambda Calculus
Resources: The slides of this lecture were derived from [Järvi], with permission of the original author, by copy & x = 1 let x = 1 in... paste or by selection, annotation, or rewording. [Järvi] is in turn
More informationMidterm 1. CMSC 430 Introduction to Compilers Spring Instructions Total 100. Name: March 14, 2012
Name: Midterm 1 CMSC 430 Introduction to Compilers Spring 2012 March 14, 2012 Instructions This exam contains 8 pages, including this one. Make sure you have all the pages. Write your name on the top of
More informationCS131 Typed Lambda Calculus Worksheet Due Thursday, April 19th
CS131 Typed Lambda Calculus Worksheet Due Thursday, April 19th Name: CAS ID (e.g., abc01234@pomona.edu): I encourage you to collaborate. collaborations below. Please record your Each question is worth
More informationCOMP 4161 NICTA Advanced Course. Advanced Topics in Software Verification. Toby Murray, June Andronick, Gerwin Klein
COMP 4161 NICTA Advanced Course Advanced Topics in Software Verification Toby Murray, June Andronick, Gerwin Klein λ 1 Last time... λ calculus syntax free variables, substitution β reduction α and η conversion
More informationCIS 500 Software Foundations Midterm I Answer key October 8, 2003
CIS 500 Software Foundations Midterm I Answer key October 8, 2003 Inductive Definitions Review: Recall that the function size, which calculates the total number of nodes in the abstract syntax tree of
More informationLecture 13: Subtyping
Lecture 13: Subtyping Polyvios Pratikakis Computer Science Department, University of Crete Type Systems and Programming Languages Pratikakis (CSD) Subtyping CS546, 2018-2019 1 / 15 Subtyping Usually found
More informationLambda Calculi With Polymorphism
Resources: The slides of this lecture were derived from [Järvi], with permission of the original author, by copy & x = 1 let x = 1 in... paste or by selection, annotation, or rewording. [Järvi] is in turn
More informationProgramming Languages Lecture 14: Sum, Product, Recursive Types
CSE 230: Winter 200 Principles of Programming Languages Lecture 4: Sum, Product, Recursive Types The end is nigh HW 3 No HW 4 (= Final) Project (Meeting + Talk) Ranjit Jhala UC San Diego Recap Goal: Relate
More informationType Systems Winter Semester 2006
Type Systems Winter Semester 2006 Week 9 December 13 December 13, 2006 - version 1.0 Plan PREVIOUSLY: unit, sequencing, let, pairs, sums TODAY: 1. recursion 2. state 3.??? NEXT: exceptions? NEXT: polymorphic
More informationCIS 500 Software Foundations Fall September 25
CIS 500 Software Foundations Fall 2006 September 25 The Lambda Calculus The lambda-calculus If our previous language of arithmetic expressions was the simplest nontrivial programming language, then the
More informationCSE505, Fall 2012, Midterm Examination October 30, 2012
CSE505, Fall 2012, Midterm Examination October 30, 2012 Rules: The exam is closed-book, closed-notes, except for one side of one 8.5x11in piece of paper. Please stop promptly at Noon. You can rip apart
More informationThe Lambda Calculus. 27 September. Fall Software Foundations CIS 500. The lambda-calculus. Announcements
CIS 500 Software Foundations Fall 2004 27 September IS 500, 27 September 1 The Lambda Calculus IS 500, 27 September 3 Announcements Homework 1 is graded. Pick it up from Cheryl Hickey (Levine 502). We
More informationDependent Object Types - A foundation for Scala's type system
Dependent Object Types - A foundation for Scala's type system Draft of January 14, 2010 Do Not Distrubute Martin Odersky, Georey Alan Washburn EPFL Abstract. 1 Introduction This paper presents a proposal
More informationPolymorphic lambda calculus Princ. of Progr. Languages (and Extended ) The University of Birmingham. c Uday Reddy
06-02552 Princ. of Progr. Languages (and Extended ) The University of Birmingham Spring Semester 2016-17 School of Computer Science c Uday Reddy2016-17 Handout 6: Polymorphic Type Systems 1. Polymorphic
More informationGoal. CS152: Programming Languages. Lecture 15 Parametric Polymorphism. What the Library Likes. What The Client Likes. Start simpler.
Goal Understand what this interface means and why it matters: CS152: Programming Languages Lecture 15 Parametric Polymorphism Dan Grossman Spring 2011 type a mylist; val mt_list : a mylist val cons : a
More informationLambda Calculus. Concepts in Programming Languages Recitation 6:
Concepts in Programming Languages Recitation 6: Lambda Calculus Oded Padon & Mooly Sagiv (original slides by Kathleen Fisher, John Mitchell, Shachar Itzhaky, S. Tanimoto ) Reference: Types and Programming
More informationCS 4110 Programming Languages & Logics. Lecture 28 Recursive Types
CS 4110 Programming Languages & Logics Lecture 28 Recursive Types 7 November 2014 Announcements 2 Foster office hours 11-12pm Guest lecture by Fran on Monday Recursive Types 3 Many languages support recursive
More informationThe Untyped Lambda Calculus
Resources: The slides of this lecture were derived from x = 1 [Järvi], with permission of the original author, by copy & let x = 1 in... paste or by selection, annotation, or rewording. [Järvi] is in turn
More informationTyped Lambda Calculus and Exception Handling
Typed Lambda Calculus and Exception Handling Dan Zingaro zingard@mcmaster.ca McMaster University Typed Lambda Calculus and Exception Handling p. 1/2 Untyped Lambda Calculus Goal is to introduce typing
More informationLecture 14: Recursive Types
Lecture 14: Recursive Types Polyvios Pratikakis Computer Science Department, University of Crete Type Systems and Programming Languages Pratikakis (CSD) Recursive Types CS546, 2018-2019 1 / 11 Motivation
More informationProgramming Languages
CSE 230: Winter 2008 Principles of Programming Languages Ocaml/HW #3 Q-A Session Push deadline = Mar 10 Session Mon 3pm? Lecture 15: Type Systems Ranjit Jhala UC San Diego Why Typed Languages? Development
More informationRecursive Types and Subtyping
Recursive Types and Subtyping #1 One-Slide Summary Recursive types (e.g., list) make the typed lambda calculus as powerful as the untyped lambda calculus. If is a subtype of then any expression of type
More informationLecture 5: The Untyped λ-calculus
Lecture 5: The Untyped λ-calculus Syntax and basic examples Polyvios Pratikakis Computer Science Department, University of Crete Type Systems and Static Analysis Pratikakis (CSD) Untyped λ-calculus I CS49040,
More informationExercise 1 (2+2+2 points)
1 Exercise 1 (2+2+2 points) The following data structure represents binary trees only containing values in the inner nodes: data Tree a = Leaf Node (Tree a) a (Tree a) 1 Consider the tree t of integers
More informationChapter 5: The Untyped Lambda Calculus
Chapter 5: The Untyped Lambda Calculus What is lambda calculus for? Basics: syntax and operational semantics Programming in the Lambda Calculus Formalities (formal definitions) What is Lambda calculus
More informationLambda Calculus and Type Inference
Lambda Calculus and Type Inference Björn Lisper Dept. of Computer Science and Engineering Mälardalen University bjorn.lisper@mdh.se http://www.idt.mdh.se/ blr/ August 17, 2007 Lambda Calculus and Type
More informationAssistant for Language Theory. SASyLF: An Educational Proof. Corporation. Microsoft. Key Shin. Workshop on Mechanizing Metatheory
SASyLF: An Educational Proof Assistant for Language Theory Jonathan Aldrich Robert J. Simmons Key Shin School of Computer Science Carnegie Mellon University Microsoft Corporation Workshop on Mechanizing
More informationLecture Notes on Data Representation
Lecture Notes on Data Representation 15-814: Types and Programming Languages Frank Pfenning Lecture 9 Tuesday, October 2, 2018 1 Introduction In this lecture we ll see our type system in action. In particular
More informationMore Untyped Lambda Calculus & Simply Typed Lambda Calculus
Concepts in Programming Languages Recitation 6: More Untyped Lambda Calculus & Simply Typed Lambda Calculus Oded Padon & Mooly Sagiv (original slides by Kathleen Fisher, John Mitchell, Shachar Itzhaky,
More informationResources: The slides of this lecture were derived from [Järvi], with permission of the original author, by copy & x = 1 let x = 1 in...
Resources: The slides of this lecture were derived from [Järvi], with permission of the original author, by copy & x = 1 let x = 1 in... paste or by selection, annotation, or rewording. [Järvi] is in turn
More informationCS4215 Programming Language Implementation. Martin Henz
CS4215 Programming Language Implementation Martin Henz Thursday 26 January, 2012 2 Chapter 4 The Language simpl In this chapter, we are exting the language epl in order to provide a more powerful programming
More informationPure (Untyped) λ-calculus. Andrey Kruglyak, 2010
Pure (Untyped) λ-calculus Andrey Kruglyak, 2010 1 Pure (untyped) λ-calculus An example of a simple formal language Invented by Alonzo Church (1936) Used as a core language (a calculus capturing the essential
More informationConcepts of programming languages
Concepts of programming languages Lecture 5 Wouter Swierstra 1 Announcements Submit your project proposal to me by email on Friday; The presentation schedule in now online Exercise session after the lecture.
More informationProgramming Language Features. CMSC 330: Organization of Programming Languages. Turing Completeness. Turing Machine.
CMSC 330: Organization of Programming Languages Lambda Calculus Programming Language Features Many features exist simply for convenience Multi-argument functions foo ( a, b, c ) Ø Use currying or tuples
More informationCMSC 330: Organization of Programming Languages
CMSC 330: Organization of Programming Languages Lambda Calculus CMSC 330 1 Programming Language Features Many features exist simply for convenience Multi-argument functions foo ( a, b, c ) Ø Use currying
More informationOverview. A normal-order language. Strictness. Recursion. Infinite data structures. Direct denotational semantics. Transition semantics
Overview A normal-order language Strictness Recursion Infinite data structures Direct denotational semantics Transition semantics Lazy (call-by-need) evaluation and its semantics A Normal-Order Language
More informationλ calculus Function application Untyped λ-calculus - Basic Idea Terms, Variables, Syntax β reduction Advanced Formal Methods
Course 2D1453, 2006-07 Advanced Formal Methods Lecture 2: Lambda calculus Mads Dam KTH/CSC Some material from B. Pierce: TAPL + some from G. Klein, NICTA Alonzo Church, 1903-1995 Church-Turing thesis First
More informationMLW. Henk Barendregt and Freek Wiedijk assisted by Andrew Polonsky. March 26, Radboud University Nijmegen
1 MLW Henk Barendregt and Freek Wiedijk assisted by Andrew Polonsky Radboud University Nijmegen March 26, 2012 inductive types 2 3 inductive types = types consisting of closed terms built from constructors
More informationPolymorphism. Lecture 19 CS 565 4/17/08
Polymorphism Lecture 19 CS 565 4/17/08 The Limitations of F 1 (simply-typed λ- calculus) In F 1 each function works exactly for one type Example: the identity function id = λx:τ. x : τ τ We need to write
More informationLesson 4 Typed Arithmetic Typed Lambda Calculus
Lesson 4 Typed Arithmetic Typed Lambda 1/28/03 Chapters 8, 9, 10 Outline Types for Arithmetic types the typing relation safety = progress + preservation The simply typed lambda calculus Function types
More informationOrnaments in ML. Thomas Williams, Didier Rémy. April 18, Inria - Gallium
Ornaments in ML Thomas Williams, Didier Rémy Inria - Gallium April 18, 2017 1 Motivation Two very similar functions let rec add m n = match m with Z n S m S (add m n) let rec append ml nl = match ml with
More informationFormal Semantics. Prof. Clarkson Fall Today s music: Down to Earth by Peter Gabriel from the WALL-E soundtrack
Formal Semantics Prof. Clarkson Fall 2015 Today s music: Down to Earth by Peter Gabriel from the WALL-E soundtrack Review Previously in 3110: simple interpreter for expression language: abstract syntax
More informationCOMP 1130 Lambda Calculus. based on slides by Jeff Foster, U Maryland
COMP 1130 Lambda Calculus based on slides by Jeff Foster, U Maryland Motivation Commonly-used programming languages are large and complex ANSI C99 standard: 538 pages ANSI C++ standard: 714 pages Java
More informationThe University of Nottingham
The University of Nottingham SCHOOL OF COMPUTER SCIENCE A LEVEL 2 MODULE, SPRING SEMESTER 2013-2014 G54FOP FOUNDATIONS OF PROGRAMMING Time allowed 2 hours Candidates may complete the front cover of their
More informationCMSC 330: Organization of Programming Languages
CMSC 330: Organization of Programming Languages Lambda Calculus Encodings CMSC 330 Spring 2017 1 Review A lambda calculus expression is defined as e ::= x variable λx.e abstraction (fun def) e e application
More informationProgramming Languages Fall 2013
Programming Languages Fall 2013 Lecture 3: Induction Prof. Liang Huang huang@qc.cs.cuny.edu Recursive Data Types (trees) data Ast = ANum Integer APlus Ast Ast ATimes Ast Ast eval (ANum x) = x eval (ATimes
More informationA Extending Type Inference to Variational Programs
A Extending Type Inference to Variational Programs SHENG CHEN, MARTIN ERWIG, and ERIC WALKINGSHAW, Oregon State University Through the use of conditional compilation and related tools, many software projects
More informationCIS 500 Software Foundations Fall December 6
CIS 500 Software Foundations Fall 2006 December 6 Administrivia Administrivia No recitations this week Extra office hours will be posted to the class mailing list Exam: Wednesday, Dec 20, 9 11 Location:
More informationAdministrivia. Existential Types. CIS 500 Software Foundations Fall December 6. Administrivia. Motivation. Motivation
CIS 500 Software Foundations Fall 2006 Administrivia December 6 Administrivia No recitations this week Extra office hours will be posted to the class mailing list Exam: Wednesday, Dec 20, 9 11 Location:
More informationLesson 11 Universal Types. Universal Types and System F
Lesson 11 Universal Types 2/28 Chapter 23 Universal Types and System F Varieties of polymorphism System F Examples Basic properties Erasure Evaluation issues Parametricity Impredicativity Lesson 11: Universal
More informationThe Substitution Model
The Substitution Model Prof. Clarkson Fall 2017 Today s music: Substitute by The Who Review Previously in 3110: simple interpreter for expression language abstract syntax tree (AST) evaluation based on
More informationλ-calculus Lecture 1 Venanzio Capretta MGS Nottingham
λ-calculus Lecture 1 Venanzio Capretta MGS 2018 - Nottingham Table of contents 1. History of λ-calculus 2. Definition of λ-calculus 3. Data Structures 1 History of λ-calculus Hilbert s Program David Hilbert
More informationCIS 500 Software Foundations. Final Exam. May 3, Answer key
CIS 500 Software Foundations Final Exam May 3, 2012 Answer key This exam includes material on the Imp language and the simply-typed lambda calculus. Some of the key definitions are repeated, for easy reference,
More informationLambda Calculus: Implementation Techniques and a Proof. COS 441 Slides 15
Lambda Calculus: Implementation Techniques and a Proof COS 441 Slides 15 Last Time: The Lambda Calculus A language of pure functions: values e ::= x \x.e e e v ::= \x.e With a call-by-value operational
More informationTyped Lambda Calculus. Chapter 9 Benjamin Pierce Types and Programming Languages
Typed Lambda Calculus Chapter 9 Benjamin Pierce Types and Programming Languages t ::= x x. t t t Call-by-value small step perational Semantics terms variable v ::= values abstraction x. t abstraction values
More informationIntroduction to System F. Lecture 18 CS 565 4/20/09
Introduction to System F Lecture 18 CS 565 4/20/09 The Limitations of F 1 (simply-typed λ- calculus) In F 1 each function works exactly for one type Example: the identity function id = λx:τ. x : τ τ We
More informationHOL DEFINING HIGHER ORDER LOGIC LAST TIME ON HOL CONTENT. Slide 3. Slide 1. Slide 4. Slide 2 WHAT IS HIGHER ORDER LOGIC? 2 LAST TIME ON HOL 1
LAST TIME ON HOL Proof rules for propositional and predicate logic Safe and unsafe rules NICTA Advanced Course Forward Proof Slide 1 Theorem Proving Principles, Techniques, Applications Slide 3 The Epsilon
More informationADT. Typing. Recursive Types. Java. Preliminary: syntax, operational semantics. Untyped lambda calculus. Simply typed lambda calculus
Review Preliminary: syntax, operational semantics Untyped lambda calculus Simply typed lambda calculus Simple extension: tuples, sums, lists Subtyping Typing ADT Universal type: system F Java Recursive
More informationSubtyping and Objects
Subtyping and Objects Massimo Merro 20 November 2017 Massimo Merro Data and Mutable Store 1 / 22 Polymorphism So far, our type systems are very rigid: there is little support to code reuse. Polymorphism
More informationCS152: Programming Languages. Lecture 11 STLC Extensions and Related Topics. Dan Grossman Spring 2011
CS152: Programming Languages Lecture 11 STLC Extensions and Related Topics Dan Grossman Spring 2011 Review e ::= λx. e x e e c v ::= λx. e c τ ::= int τ τ Γ ::= Γ, x : τ (λx. e) v e[v/x] e 1 e 1 e 1 e
More informationDenotational Semantics. Domain Theory
Denotational Semantics and Domain Theory 1 / 51 Outline Denotational Semantics Basic Domain Theory Introduction and history Primitive and lifted domains Sum and product domains Function domains Meaning
More informationLambda Calculus and Extensions as Foundation of Functional Programming
Lambda Calculus and Extensions as Foundation of Functional Programming David Sabel and Manfred Schmidt-Schauß 29. September 2015 Lehrerbildungsforum Informatik Last update: 30. September 2015 Overview
More informationExercise 1 ( = 22 points)
1 Exercise 1 (4 + 3 + 4 + 5 + 6 = 22 points) The following data structure represents polymorphic lists that can contain values of two types in arbitrary order: data DuoList a b = C a (DuoList a b) D b
More informationType Systems. Today. 1. Organizational Matters. 1. Organizational Matters. Lecture 1 Oct. 20th, 2004 Sebastian Maneth. 1. Organizational Matters
Today Type Systems 1. Organizational Matters 2. What is this course about? 3. Where do types come from? 4. Def. of the small language Expr. Its syntax and semantics. Lecture 1 Oct. 20th, 2004 Sebastian
More informationHarvard School of Engineering and Applied Sciences CS 152: Programming Languages
Harvard School of Engineering and Applied Sciences CS 152: Programming Languages Lecture 14 Tuesday, March 24, 2015 1 Parametric polymorphism Polymorph means many forms. Polymorphism is the ability of
More informationDesign Principles of Programming Languages. Recursive Types. Zhenjiang Hu, Haiyan Zhao, Yingfei Xiong Peking University, Spring Term
Design Principles of Programming Languages Recursive Types Zhenjiang Hu, Haiyan Zhao, Yingfei Xiong Peking University, Spring Term Review: what have we learned so far? λ-calculus: function and data can
More informationLet Arguments Go First
Let Arguments Go First Ningning Xie and Bruno C. d. S. Oliveira The University of Hong Kong {nnxie,bruno}@cs.hku.hk Abstract. Bi-directional type checking has proved to be an extremely useful and versatile
More information