Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 SML fn x => e e 1 e 2 0, 1, 2,..., +, -,... true, false, if e then e else e patterns datatypes exceptions structures functors fun f x = e variables.

Similar presentations


Presentation on theme: "1 SML fn x => e e 1 e 2 0, 1, 2,..., +, -,... true, false, if e then e else e patterns datatypes exceptions structures functors fun f x = e variables."— Presentation transcript:

1 1 SML fn x => e e 1 e 2 0, 1, 2,..., +, -,... true, false, if e then e else e patterns datatypes exceptions structures functors fun f x = e variables

2 2 What lies in the core of SML? fn x => e e 1 e 2 0, 1, 2,..., +, -,... true, false, if e then e else e patterns datatypes exceptions structures functors fun f x = e variables ?

3 3 Candidates? booleans and if/then/else integers lists variables functions and function applications datatypes patterns structures functors...

4 4 Core of SML fn x => e e 1 e 2 x

5 5  calculus

6 6  calculus is Turing-complete fn x => e e 1 e 2 x Turing machine  calculus =

7 CSE-321 Programming Languages -Calculus POSTECH March 21, 2007 박성우

8 8 Outline Abstract syntax of the -calculus Operational semantics of the -calculus Substitutions Programming in the -calculus

9 9 Syntax for a Programming Language Concrete syntax program = string of characters specifies rules for parsing. –operator precedence –associativity –keywords,... 1 + 2 * 3 1 + (2 * 3) 1 + (2 * (3)) Abstract syntax abstracts away from details of parsing. focuses on the high-level structure of programs. suitable for studying the semantics

10 10 x –variable –z, s, t, f, arg, accum,... x. e – -abstraction – x = formal argument, e = body – ¼ fn x => e e 1 e 2 –application –left-associative (as in SML): e 1 e 2 e 3 = (e 1 e 2 ) e 3 e 1 e 2 e 3  e 1 (e 2 e 3 ) Abstract Syntax of the -Calculus

11 11 Examples

12 12 Outline Abstract syntax of the -calculus V Operational semantics of the -calculus Substitutions Programming in the -calculus

13 13 Semantics of Languages Answers "what is the meaning of a given program?" –SML has a formal semantics. –What about C? Three styles –denotational semantics –axiomatic semantics –operational semantics The 1990s saw the renaissance of operational semantics.

14 14 Operational Semantics Specifies how to transform a program into a value via a sequence of operations Program Value P2P2 operation PnPn... let fun fac 1 = 1 | fac n = n * fac (n - 1) in fac 4 end 24

15 15 Operational Semantics of -Calculus Specifies how to transform an expression into a value via a sequence of reductions Expr Value E2E2 reduction EnEn...

16 16 Values and Reductions

17 17 Reductions redex = reducible expression :  -reduction

18 18 _____ = Redex

19 19 _____ = Redex

20 20  Reduction Not Unique So we need a reduction strategy.

21 21  Reduction Not Unique So we need a reduction strategy.

22 22 Call-by-name Call-by-value

23 23 Call-by-name Call-by-value

24 24

25 25

26 26 Call-by-name Call-by-value Used in Haskell Lazy or non-strict functional languages The implementation uses call-by-need. Superb! Used in SML Eager or strict functional languages Superb! (fn x => 0)

27 27 Assignments Assignment 2 –average 86.68 –Be sure to take a look at the sample solution. Assignment 3 –to be out by midnight tonight. ??? –due on April 2 –Start early! (  Start coding early!)

28 28 Quiz 1 Next Monday Read Chapter 2 of Course Notes. –'fill in the blank' problems (i.e., easy) 15 minutes –Please show up on time. Otherwise you might miss the quiz!

29 29 Anonymous Feedback To be set up sometime today (hopefully) –http://pl.postech.ac.kr/~gla/feedback/ I will appreciate your feedback on this course. –lectures –assignments –schedule –topics It is you who will improve this course!


Download ppt "1 SML fn x => e e 1 e 2 0, 1, 2,..., +, -,... true, false, if e then e else e patterns datatypes exceptions structures functors fun f x = e variables."

Similar presentations


Ads by Google