Download presentation
Presentation is loading. Please wait.
Published byHarvey Barnaby Franklin Modified over 9 years ago
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!
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.