1 SML fn x => e e 1 e 2 0, 1, 2,..., +, -,... true, false, if e then e else e patterns datatypes...
-
Upload
harvey-barnaby-franklin -
Category
Documents
-
view
212 -
download
0
Transcript of 1 SML fn x => e e 1 e 2 0, 1, 2,..., +, -,... true, false, if e then e else e patterns datatypes...
1
SML
fn x => e
e1 e2
0, 1, 2, ..., +, -, ...
true, false, if e then e else e
patterns
datatypes
exceptions
structures
functors
fun f x = evariables
2
What lies in the core of SML?
fn x => e
e1 e2
0, 1, 2, ..., +, -, ...
true, false, if e then e else e
patterns
datatypes
exceptions
structures
functors
fun f x = evariables
?
3
Candidates?• booleans and if/then/else• integers• lists• variables• functions and function applications• datatypes• patterns• structures• functors• ...
4
Core of SML
fn x => ee1 e2
x
5
calculus
CSE-321 Programming Languages
-Calculus
POSTECH
March 21, 2007
박성우
8
Outline• Abstract syntax of the -calculus• Operational semantics of the -calculus• Substitutions• Programming in the -calculus
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
• x– variable– z, s, t, f, arg, accum, ...
• x. e– -abstraction– x = formal argument, e = body– ¼ fn x => e
• e1 e2
– application– left-associative (as in SML):
• e1 e2 e3 = (e1 e2 ) e3
• e1 e2 e3 e1 (e2 e3 )
Abstract Syntax of the -Calculus
11
Examples
12
Outline• Abstract syntax of the -calculus V• Operational semantics of the -calculus• Substitutions• Programming in the -calculus
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
Operational Semantics• Specifies how to transform a program into a value
via a sequence of operations
Program ValueP2
operation operation operationPnoperation...
let fun fac 1 = 1 | fac n = n * fac (n - 1)in fac 4end
24
15
Operational Semantics of -Calculus
• Specifies how to transform an expression into a value via a sequence of reductions
Expr ValueE2
reduction reduction reductionEnreduction...
16
Values and Reductions
17
Reductions
redex = reducible expression
: -reduction
19
_____ = Redex
21
Reduction Not Unique
So we need a reduction strategy.
22
Call-by-name Call-by-value
23
Call-by-name Call-by-value
25
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) <some horrible computation>
(fn x => 0) <non-terminating computation>
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
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
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!