250 likes | 271 Views
Delve into the essence of SML and λ-Calculus in CSE-321 Programming Languages, covering abstract syntax, operational semantics, substitutions, and programming in the λ-calculus.
E N D
SML 0, 1, 2, ..., +, -, ... true, false, if e then e else e fun f x = e variables exceptions e1 e2 patterns functors fn x => e structures datatypes
? What 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 => e structures datatypes
Candidates? • booleans and if/then/else • integers • lists • variables • functions and function applications • datatypes • patterns • structures • functors • ...
x fn x => e e1 e2 Core of SML
CSE-321 Programming Languages-Calculus 박성우 POSTECH March 21, 2007
Outline • Abstract syntax of the -calculus • Operational semantics of the l-calculus • Substitutions • Programming in the -calculus
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 Syntax for a Programming Language
Abstract Syntax of the -Calculus • 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 )
Outline • Abstract syntax of the -calculus V • Operational semantics of the l-calculus • Substitutions • Programming in the -calculus
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.
operation operation Value Pn P2 ... operation operation Operational 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
reduction reduction Value En E2 ... reduction reduction Operational Semantics of -Calculus • Specifies how to transform an expression into a value via a sequence of reductions Expr
: -reduction redex = reducible expression Reductions
-Reduction Not Unique So we need a reduction strategy.
Used in Haskell Lazy or non-strict functional languages The implementation uses call-by-need. Superb! Used in SML Eager or strictfunctional languages Superb! Call-by-nameCall-by-value (fn x => 0) <some horrible computation> (fn x => 0) <non-terminating computation>
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!)
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!
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!