Title: SML
1SML
0, 1, 2, ..., , -, ...
true, false, if e then e else e
fun f x e
variables
exceptions
e1 e2
patterns
functors
fn x gt e
structures
datatypes
2What lies in the core of SML?
0, 1, 2, ..., , -, ...
true, false, if e then e else e
fun f x e
variables
exceptions
e1 e2
patterns
functors
fn x gt e
structures
datatypes
3Candidates?
- booleans and if/then/else
- integers
- lists
- variables
- functions and function applications
- datatypes
- patterns
- structures
- functors
- ...
4Core of SML
5(No Transcript)
6?-calculus is Turing-complete
?-calculus
Turing machine
7CSE-321 Programming Languages?-Calculus
???
8Outline
- Abstract syntax of the ?-calculus
- Operational semantics of the l-calculus
- Substitutions
- Programming in the ?-calculus
9Syntax 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
10Abstract Syntax of the ?-Calculus
- x
- variable
- z, s, t, f, arg, accum, ...
- ?x. e
- ?-abstraction
- x formal argument, e body
- ¼ fn x gt e
- e1 e2
- application
- left-associative (as in SML)
- e1 e2 e3 (e1 e2 ) e3
- e1 e2 e3 ? e1 (e2 e3 )
11Examples
12Outline
- Abstract syntax of the ?-calculus V
- Operational semantics of the l-calculus
- Substitutions
- Programming in the ?-calculus
13Semantics 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.
14Operational Semantics
- Specifies how to transform a program into a value
via a sequence of operations
Program
let fun fac 1 1 fac n n fac (n -
1) in fac 4 end
24
15Operational Semantics of ?-Calculus
- Specifies how to transform an expression into a
value via a sequence of reductions
Expr
16Values and Reductions
17Reductions
18_____ Redex
19_____ Redex
20?-Reduction Not Unique
So we need a reduction strategy.
21?-Reduction Not Unique
So we need a reduction strategy.
22Call-by-name Call-by-value
23Call-by-name Call-by-value
24(No Transcript)
25(No Transcript)
26Call-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 gt 0) ltsome horrible computationgt
(fn x gt 0) ltnon-terminating computationgt
27Assignments
- 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!)
28Quiz 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!
29Anonymous 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!