Func+on applica+ons (calls, invoca+ons)
|
|
- Christine Elisabeth Norton
- 1 years ago
- Views:
Transcription
1 Func%ons in Racket Racket Functions: most important building block in Racket (and 25) Functions/procedures/methods/subroutines abstract over computations Like Java methods, Python functions have arguments and result But no classes, this, return, etc. Examples: (define dbl (lambda (x) (* x 2))) CS25 Programming Languages Fall 207, Lyn Turbak (define quad (lambda (x) (dbl (dbl x)))) (define avg (lambda (a b) (/ (+ a b) 2))) (define sqr (lambda (n) (* n n))) Department of Computer Science Wellesley College (define n 0) (define small? (lambda (num) (<= num n))) 2 lambda denotes a anonymous func+on Syntax: (lambda (Id... Idn) Ebody) lambda: keyword that introduces an anonymous func+on (the func+on itself has no name, but you re welcome to name it using define) Id... Idn: any iden+fiers, known as the parameters of the func+on. Ebody: any expression, known as the body of the func+on. It typically (but not always) uses the func+on parameters. Evalua+on rule: A lambda expression is just a value (like a number or boolean), so a lambda expression evaluates to itself! What about the func+on body expression? That s not evaluated un+l later, when the func+on is called. (Synonyms for called are applied and invoked.) 3 Func+on applica+ons (calls, invoca+ons) To use a func+on, you apply it to arguments (call it on arguments). E.g. in Racket: (dbl 3), (avg 8 2), (small? 7) Syntax: (E0 E En) A func+on applica+on expression has no keyword. It is the only parenthesized expression that doesn t begin with a keyword. E0: any expression, known as the rator of the func+on call (i.e., the func+on posi+on). E En: any expressions, known as the rands of the call (i.e., the argument posi+ons). Evalua+on rule:. Evaluate E0 En in the current environment to values V0 Vn. 2. If V0 is not a lambda expression, raise an error. 3. If V0 is a lambda expression, returned the result of applying it to the argument values V Vn (see following slides). 4
2 Func+on applica+on What does it mean to apply a func+on value (lambda expression) to argument values? E.g. ((lambda (x) (* x 2)) 3) Func+on applica+on: subs+tu+on model Example : ((lambda (x) (* x 2)) 3) Subs+tute 3 for x in (* x 2) (* 3 2) We will explain func+on applica+on using two models:. The subs%tu%on model: subs+tute the argument values for the parameter names in the func+on body. Later This lecture 2. The environment model: extend the environment of the func+on with bindings of the parameter names to the argument values. 5 Example 2: Now evaluate (* 3 2)to 6 (/ (+ 8 2) 2) Subs+tute 8 for a and 2 for b in(/ (+ a b) 2) Now evaluate (/ (+ 8 2) 2) to 0 6 Subs+tu+on nota+on We will use the nota+on E[V,, Vn/Id,, Idn] to indicate the expression that results from subs+tu+ng the values V,, Vn for the iden+fiers Id,, Idn in the expression E. For example: (* x 2)[3/x] stands for (* 3 2) (/ (+ a b) 2)[8,2/a,b] stands for (/ (+ 8 2) 2) (if (< x z) (+ (* x x) (* y y)) (/ x y)) [3,4/x,y] stands for(if (< 3 z) (+ (* 3 3) (* 4 4)) (/ 3 4)) Avoid this common subs+tu+on bug Students some+mes incorrectly subs+tute the argument values into the parameter posi+ons: Makes no sense (lambda (8 2) (/ (+ 8 2) 2)) When subs+tu+ng argument values for parameters, only the modified body should remain. The lambda and params disappear! It turns out that there are some very tricky aspects to doing subs+tu+on correctly. We ll talk about these when we encounter them. 7 (/ (+ 8 2) 2) 8
3 Small-step func+on applica+on rule: subs+tu+on model ( (lambda (Id Idn) Ebody) V Vn ) Ebody[V Vn/Id Idn] [func+on call (a.k.a.apply)] Note: could extend this with no+on of current environment Small-step seman+cs: func+on example (quad 3) ((lambda (x) (dbl (dbl x))) 3) [varref] (dbl (dbl 3)) [func+on call] ((lambda (x) (* x 2)) (dbl 3)) [varref] ((lambda (x) (* x 2)) ((lambda (x) (* x 2)) 3)) [varref] ((lambda (x) (* x 2)) (* 3 2)) [func+on call] ((lambda (x) (* x 2)) 6) [mul+plica+on] (* 6 2) [func+on call] 2 [mul+plica+on] 9 0 Small-step substitution model semantics: your turn Suppose env3 = n 0, small? (lambda (num) (<= num n)), sqr (lambda (n) (* n n)) Give an evalua+on deriva+on for (small? (sqr n))# env3 Stepping back: name issues Do the par+cular choices of func+on parameter names macer? Is there any confusion caused by the fact that dbl and quad both use x as a parameter? Are there any parameter names that we can t change x to in quad? In (small? (sqr n)), is there any confusion between the global parameter name n and parameter n in sqr? Is there any parameter name we can t use instead of num in small? 2
4 Evalua+on Contexts Although we will not do so here, it is possible to formalize exactly how to find the next redex in an expression using so-called evalua%on contexts. For example, in Racket, we never try to reduce an expression within the body of a lambda. ( (lambda (x) (+ (* 4 5) x)) (+ 2) ) not this this is the first redex We ll see later in the course that other choices are possible (and sensible). 3 Big step func+on call rule: subs+tu+on model E0 # env (lambda (Id Idn) Ebody) E # env V En # env Vn Ebody[V Vn/Id Idn] # env Vbody (E0 E En) # env Vbody Note: no need for func+on applica+on frames like those you ve seen in Python, Java, C, (func+on call) 4 Subs+tu+on model deriva+on Suppose env2 = dbl (lambda (x) (* x 2)), quad (lambda (x) (dbl (dbl x))) quad # env2 (lambda (x) (dbl (dbl x))) 3 # env2 3 dbl # env2 (lambda (x) (* x 2)) dbl # env2 (lambda (x) (* x 2)) 3 # env2 3 (* 3 2) # env2 6 [mul+plica+on rule, subparts omiced] [func+on call (dbl 3)# env2 6 (* 6 2) # env2 2 (mul+plica+on rule, subparts omiced) (func+on call) (dbl (dbl 3))# env2 2 (func+on call) (quad 3)# env2 2 5 Recursion Recursion works as expected in Racket using the subs+tu+on model (both in big-step and small-step seman+cs). There is no need for any special rules involving recursion! The exis+ng rules for defini+ons, func+ons, and condi+onals explain everything. (define fact (lambda (n) (if (= n 0) (* n (fact (- n )))))) What is the value of (fact 3)? 6
5 Small-step recursion derivation for (fact 4) [] Let s use the abbrevia+on λ_fact for the expression (λ (n) (if (= n 0) (* n (fact (- n ))))) ({fact} 4) {(λ_fact 4)} (if {(= 4 0)} (* 4 (fact (- 4 )))) {(if #f (* 4 (fact (- 4 ))))} (* 4 ({fact} (- 4 ))) (* 4 (λ_fact {(- 4 )})) (* 4 {(λ_fact 3)}) (* 4 (if {(= 3 0)} (* 3 (fact (- 3 ))))) (* 4 {(if #f (* 3 (fact (- 3 ))))}) (* 4 (* 3 ({fact} (- 3 )))) (* 4 (* 3 (λ_fact {(- 3 )}))) (* 4 (* 3 {(λ_fact 2)})) (* 4 (* 3 (if {(= 2 0)} (* 2 (fact (- 2 )))))) (* 4 (* 3 {(if #f (* 2 (fact (- 2 ))))})) continued on next slide 7 Small-step recursion derivation for (fact 4) [2] continued from previous slide (* 4 (* 3 (* 2 ({fact} (- 2 ))))) (* 4 (* 3 (* 2 (λ_fact {(- 2 )})))) (* 4 (* 3 (* 2 {(λ_fact )}))) (* 4 (* 3 (* 2 {(λ_fact )}))) (* 4 (* 3 (* 2 (if {(= 0)} (* (fact (- ))))))) (* 4 (* 3 (* 2 {(if #f (* (fact (- ))))}))) (* 4 (* 3 (* 2 (* ({fact} (- )))))) (* 4 (* 3 (* 2 (* (λ_fact {(- )}))))) (* 4 (* 3 (* 2 (* {(λ_fact 0)})))) (* 4 (* 3 (* 2 (* (if {(= 0 0)} (* 0 (fact (- 0 )))))))) (* 4 (* 3 (* 2 (* {(if #t (* 0 (fact (- 0 ))))})))) (* 4 (* 3 (* 2 {(* )}))) (* 4 (* 3 {(* 2 )})) (* 4 {(* 3 2)}) {(* 4 6)} 24 8 Abbreviating derivations with * E * E2 means E reduces to E2 in zero or more steps ({fact} 4) {(λ_fact 4)} * (* 4 {(λ_fact 3)}) * (* 4 (* 3 {(λ_fact 2)})) * (* 4 (* 3 (* 2 {(λ_fact )}))) * (* 4 (* 3 (* 2 (* {(λ_fact 0)})))) * (* 4 (* 3 (* 2 {(* )}))) (* 4 (* 3 {(* 2 )})) (* 4 {(* 3 2)}) {(* 4 6)} 24 Recursion: your turn Show an abbreviated small-step evalua+on of (pow 5 3) where pow is defined as: (define pow (lambda (base exp) (if (= exp 0) (* base (pow base (- exp )))))) How many mul+plica+ons are performed in (pow 2 0)? (pow 2 00)? (pow 2 000)? What is the stack depth (# pending mul+plies) in these cases? 9 20
6 Recursion: your turn 2 Show an abbreviated small-step evalua+on of (fast-pow 2 0) with the following defini+ons : (define square (lambda (n) (* n n))) (define even? (lambda (n) (= 0 (remainder n 2)))) (define fast-pow (lambda (base exp) (if (= exp 0) (if (even? exp) (fast-pow (square base ) (/ exp 2)) (* base (fast-pow base (- exp ))))))) How many mul+plica+ons are performed in (pow 2 0)? (pow 2 00)? (pow 2 000)? What is the stack depth (# pending mul+plies) in these cases? 2 Tree Recursion: fibonacci Suppose the global env contains binding fib λ_fib, where λ_fib abbreviates (λ (n) (if (<= n ) n (+ (fib (- n )) (fib (- n 2))))) ({fib} 4) {(λ_fib 4)} * (+ {(λ_fib 3)} (fib (- 4 2))) * (+ (+ {(λ_fib 2)} (fib (- 3 2))) (fib (- 4 2))) * (+ (+ (+ {(λ_fib )} (fib (- 2 2))) (fib (- 3 2))) (fib (- 4 2))) * (+ (+ (+ {(λ_fib 0)}) (fib (- 3 2))) (fib (- 4 2))) * (+ (+ {(+ 0)} (fib (- 3 2))) (fib (- 4 2))) * (+ (+ {(λ_fib )}) (fib (- 4 2))) * (+ {(+ )} (fib (- 4 2))) * (+ 2 {(λ_fib 2)}) * (+ 2 (+ {(λ_fib )} (fib (- 2 2)))) * (+ 2 (+ {(λ_fib 0)})) * (+ 2 {(+ 0)}) {(+ 2 )} 3 22 Syntac+c sugar: func+on defini+ons Syntactic sugar: simpler syntax for common pattern. Implemented via textual translation to existing features. i.e., not a new feature. Example: Alternative function definition syntax in Racket: (define (Id_funName Id Idn) E_body) desugars to (define Id_funName (lambda (Id Idn) E_body)) (define (dbl x) (* x 2)) (define (quad x) (dbl (dbl x))) (define (pow base exp) (if (< exp ) (* base (pow base (- exp ))))) syntax syntax syntax syntax syntax syntax syntax syntax syntax syntax syntax syntax 23 Racket Operators are Actually! Surprise! In Racket, opera+ons like (+ e e2), (< e e2)and (not e)are really just func+on calls! There is an ini+al top-level environment that contains bindings for built-in func+ons like: + addition function, - subtraction function, * multiplication function, < less-than function, not boolean negation function, (where some built-in functions can do special primitive things that regular users normally can t do --- e.g. add two numbers) 24
7 Summary So Far Racket declarations: defini+ons: (define Id E) Racket expressions: condi+onals: (if Etest Ethen Eelse) func+on values: (lambda (Id Idn) Ebody) Func+on calls: (Erator Erand Erandn) Note: arithmetic and relation operations are just function calls What about? Assignment? Don t need it! Loops? Don t need them! Use tail recursion, coming soon. Data structures? Glue together two values with cons (next time) 25
Racket Values. cons Glues Two Values into a Pair. The Pros of cons: Programming with Pairs and Lists. Box-and-pointer diagrams for cons trees
The Pros of cons: Programming with CS251 Programming Languages Fall 2017, Lyn Turbak Department of Computer Science Wellesley College booleans: #t, #f numbers: integers: 42, 0, -273 ra3onals: 2/3, -251/17
Functional abstraction. What is abstraction? Eating apples. Readings: HtDP, sections Language level: Intermediate Student With Lambda
Functional abstraction Readings: HtDP, sections 19-24. Language level: Intermediate Student With Lambda different order used in lecture section 24 material introduced much earlier sections 22, 23 not covered
Functional abstraction
Functional abstraction Readings: HtDP, sections 19-24. Language level: Intermediate Student With Lambda different order used in lecture section 24 material introduced much earlier sections 22, 23 not covered
(Func&onal (Programming (in (Scheme)))) Jianguo Lu
(Func&onal (Programming (in (Scheme)))) Jianguo Lu 1 Programming paradigms Func&onal No assignment statement No side effect Use recursion Logic OOP AOP 2 What is func&onal programming It is NOT what you
Related Course Objec6ves
Syntax 9/18/17 1 Related Course Objec6ves Develop grammars and parsers of programming languages 9/18/17 2 Syntax And Seman6cs Programming language syntax: how programs look, their form and structure Syntax
Local defini1ons. Func1on mul1ples- of
Local defini1ons The func1ons and special forms we ve seen so far can be arbitrarily nested except define and check- expect. So far, defini.ons have to be made at the top level, outside any expression.
CS 342 Lecture 7 Syntax Abstraction By: Hridesh Rajan
CS 342 Lecture 7 Syntax Abstraction By: Hridesh Rajan 1 Reading SICP, page 11-19, Section 1.1.6 Little Schemer, Chapter 2 2 The Idea of Syntax Abstraction Problem. Often programming tasks are repetitive,
SCHEME 7. 1 Introduction. 2 Primitives COMPUTER SCIENCE 61A. October 29, 2015
SCHEME 7 COMPUTER SCIENCE 61A October 29, 2015 1 Introduction In the next part of the course, we will be working with the Scheme programming language. In addition to learning how to write Scheme programs,
CS1 Recitation. Week 1
CS1 Recitation Week 1 Admin READ YOUR CS ACCOUNT E-MAIL!!! Important announcements, like when the cluster will be unavailable, or when you need to reset your password. If you want to forward your e-mail:
Fall 2017 Discussion 7: October 25, 2017 Solutions. 1 Introduction. 2 Primitives
CS 6A Scheme Fall 207 Discussion 7: October 25, 207 Solutions Introduction In the next part of the course, we will be working with the Scheme programming language. In addition to learning how to write
Introduction to Lambda Calculus. Lecture 7 CS /08/09
Introduction to Lambda Calculus Lecture 7 CS 565 02/08/09 Lambda Calculus So far, we ve explored some simple but non-interesting languages language of arithmetic expressions IMP (arithmetic + while loops)
Organization of Programming Languages CS3200/5200N. Lecture 11
Organization of Programming Languages CS3200/5200N Razvan C. Bunescu School of Electrical Engineering and Computer Science bunescu@ohio.edu Functional vs. Imperative The design of the imperative languages
Spring 2018 Discussion 7: March 21, Introduction. 2 Primitives
CS 61A Scheme Spring 2018 Discussion 7: March 21, 2018 1 Introduction In the next part of the course, we will be working with the Scheme programming language. In addition to learning how to write Scheme
Intro. Scheme Basics. scm> 5 5. scm>
Intro Let s take some time to talk about LISP. It stands for LISt Processing a way of coding using only lists! It sounds pretty radical, and it is. There are lots of cool things to know about LISP; if
Racket. CSE341: Programming Languages Lecture 14 Introduction to Racket. Getting started. Racket vs. Scheme. Example.
Racket Next 2+ weeks will use the Racket language (not ML) and the DrRacket programming environment (not emacs) Installation / basic usage instructions on course website CSE34: Programming Languages Lecture
Introduction to Lambda Calculus. Lecture 5 CS 565 1/24/08
Introduction to Lambda Calculus Lecture 5 CS 565 1/24/08 Lambda Calculus So far, we ve explored some simple but non-interesting languages language of arithmetic expressions IMP (arithmetic + while loops)
Functional Programming. Pure Functional Languages
Functional Programming Pure functional PLs S-expressions cons, car, cdr Defining functions read-eval-print loop of Lisp interpreter Examples of recursive functions Shallow, deep Equality testing 1 Pure
CS251 Programming Languages Spring 2016, Lyn Turbak Department of Computer Science Wellesley College
A PostFix Interpreter in Racket CS251 Programming Languages Spring 2016, Lyn Turbak Department of Computer Science Wellesley College PostFix PostFix is a stack- based mini- language that will be our first
Principles of Programming Languages
Principles of Programming Languages www.cs.bgu.ac.il/~ppl172 Lesson 6 - Defining a Programming Language Bottom Up Collaboration and Management - Elements of Programming Dana Fisman 1 What we accomplished
A Brief Introduction to Scheme (I)
A Brief Introduction to Scheme (I) Philip W. L. Fong pwlfong@cs.uregina.ca Department of Computer Science University of Regina Regina, Saskatchewan, Canada Scheme Scheme I p.1/44 Scheme: Feature Set A
INTERPRETERS 8. 1 Calculator COMPUTER SCIENCE 61A. November 3, 2016
INTERPRETERS 8 COMPUTER SCIENCE 61A November 3, 2016 1 Calculator We are beginning to dive into the realm of interpreting computer programs that is, writing programs that understand other programs. In
Slide Set 1. for ENCM 339 Fall Steve Norman, PhD, PEng. Electrical & Computer Engineering Schulich School of Engineering University of Calgary
Slide Set 1 for ENCM 339 Fall 2016 Steve Norman, PhD, PEng Electrical & Computer Engineering Schulich School of Engineering University of Calgary September 2016 ENCM 339 Fall 2016 Slide Set 1 slide 2/43
Project 2: Scheme Interpreter
Project 2: Scheme Interpreter CSC 4101, Fall 2017 Due: 12 November 2017 For this project, you will implement a simple Scheme interpreter in C++ or Java. Your interpreter should be able to handle the same
(Provisional) Lecture 22: Rackette Overview, Binary Tree Analysis 10:00 AM, Oct 27, 2017
Integrated Introduction to Computer Science Hughes (Provisional) Lecture 22: Rackette Overview, Binary Tree Analysis 10:00 Contents 1 Announcements 1 2 An OCaml Debugging Tip 1 3 Introduction to Rackette
Interpreters and Tail Calls Fall 2017 Discussion 8: November 1, 2017 Solutions. 1 Calculator. calc> (+ 2 2) 4
CS 61A Interpreters and Tail Calls Fall 2017 Discussion 8: November 1, 2017 Solutions 1 Calculator We are beginning to dive into the realm of interpreting computer programs that is, writing programs that
Properties and Definitions
Section 0.1 Contents: Operations Defined Multiplication as an Abbreviation Visualizing Multiplication Commutative Properties Parentheses Associative Properties Identities Zero Product Answers to Exercises
Welcome to CS 115 (Winter 2018)
Welcome to CS 115 (Winter 2018) Web page (the main information source): http://www.student.cs.uwaterloo.ca/ cs115/ Course Personnel: Contact information and office hours for all staff: instructors, ISAs
Scheme as implemented by Racket
Scheme as implemented by Racket (Simple view:) Racket is a version of Scheme. (Full view:) Racket is a platform for implementing and using many languages, and Scheme is one of those that come out of the
PostFix. PostFix command semanccs (except exec) PostFix Syntax. A PostFix Interpreter in Racket. CS251 Programming Languages Fall 2017, Lyn Turbak
PostFix A PostFix Interpreter in Racket CS251 Programming Languages Fall 2017, Lyn Turbak Department of Computer Science Wellesley College PostFix is a stack-based mini-language that will be our first
The design recipe. Readings: HtDP, sections 1-5. (ordering of topics is different in lectures, different examples will be used)
The design recipe Readings: HtDP, sections 1-5 (ordering of topics is different in lectures, different examples will be used) Survival and Style Guides CS 135 Winter 2018 02: The design recipe 1 Programs
Lecture 12: Conditional Expressions and Local Binding
Lecture 12: Conditional Expressions and Local Binding Introduction Corresponds to EOPL 3.3-3.4 Please review Version-1 interpreter to make sure that you understand how it works Now we will extend the basic
Lambda Calculus. CS 550 Programming Languages Jeremy Johnson
Lambda Calculus CS 550 Programming Languages Jeremy Johnson 1 Lambda Calculus The semantics of a pure functional programming language can be mathematically described by a substitution process that mimics
Bindex: Naming, Free Variables, and Environments
Review: Scope and Lexical Contours Bindex: Naming, Free Variables, and Environments scope = area of program where declared name can be used. Show scope in Racket via lexical contours in scope diagrams.
The syntax and semantics of Beginning Student
The syntax and semantics of Beginning Student Readings: HtDP, Intermezzo 1 (Section 8). We are covering the ideas of section 8, but not the parts of it dealing with section 6/7 material (which will come
The syntax and semantics of Beginning Student
The syntax and semantics of Beginning Student Readings: HtDP, Intermezzo 1 (Section 8). We are covering the ideas of section 8, but not the parts of it dealing with section 6/7 material (which will come
Formal Semantics. Aspects to formalize. Lambda calculus. Approach
Formal Semantics Aspects to formalize Why formalize? some language features are tricky, e.g. generalizable type variables, nested functions some features have subtle interactions, e.g. polymorphism and
CS450: Structure of Higher Level Languages Spring 2018 Assignment 7 Due: Wednesday, April 18, 2018
CS450: Structure of Higher Level Languages Spring 2018 Assignment 7 Due: Wednesday, April 18, 2018 Taken from assignments by Profs. Carl Offner and Ethan Bolker Part 1 - Modifying The Metacircular Evaluator
;;; Determines if e is a primitive by looking it up in the primitive environment. ;;; Define indentation and output routines for the output for
Page 1/11 (require (lib "trace")) Allow tracing to be turned on and off (define tracing #f) Define a string to hold the error messages created during syntax checking (define error msg ""); Used for fancy
Ruby: Introduction, Basics
Ruby: Introduction, Basics Computer Science and Engineering College of Engineering The Ohio State University Lecture 4 Ruby vs Java: Similarities Imperative and object-oriented Classes and instances (ie
CS321 Languages and Compiler Design I. Winter 2012 Lecture 4
CS321 Languages and Compiler Design I Winter 2012 Lecture 4 1 LEXICAL ANALYSIS Convert source file characters into token stream. Remove content-free characters (comments, whitespace,...) Detect lexical
Review. CS152: Programming Languages. Lecture 11 STLC Extensions and Related Topics. Let bindings (CBV) Adding Stuff. Booleans and Conditionals
Review CS152: Programming Languages Lecture 11 STLC Extensions and Related Topics e ::= λx. e x ee c v ::= λx. e c (λx. e) v e[v/x] e 1 e 2 e 1 e 2 τ ::= int τ τ Γ ::= Γ,x : τ e 2 e 2 ve 2 ve 2 e[e /x]:
Lecture 3: Recursion; Structural Induction
15-150 Lecture 3: Recursion; Structural Induction Lecture by Dan Licata January 24, 2012 Today, we are going to talk about one of the most important ideas in functional programming, structural recursion
CS 314 Principles of Programming Languages. Lecture 16
CS 314 Principles of Programming Languages Lecture 16 Zheng Zhang Department of Computer Science Rutgers University Friday 28 th October, 2016 Zheng Zhang 1 CS@Rutgers University Class Information Reminder:
More on variables, arrays, debugging
More on variables, arrays, debugging zombie[1] zombie[3] Buuuuugs zombie[4] zombie[2] zombie[5] zombie[0] Fundamentals of Computer Science Keith Vertanen Variables revisited Scoping Arrays revisited Overview
CS61A Discussion Notes: Week 11: The Metacircular Evaluator By Greg Krimer, with slight modifications by Phoebus Chen (using notes from Todd Segal)
CS61A Discussion Notes: Week 11: The Metacircular Evaluator By Greg Krimer, with slight modifications by Phoebus Chen (using notes from Todd Segal) What is the Metacircular Evaluator? It is the best part
CS152: Programming Languages. Lecture 7 Lambda Calculus. Dan Grossman Spring 2011
CS152: Programming Languages Lecture 7 Lambda Calculus Dan Grossman Spring 2011 Where we are Done: Syntax, semantics, and equivalence For a language with little more than loops and global variables Now:
CS301 Compiler Design and Implementation Handout # 18 Prof. Lyn Turbak February 19, 2003 Wellesley College
CS30 Compiler Design and Implementation Handout # 8 Prof. Lyn Turbak February 9, 003 Wellesley College Intex: An Introduction to Program Manipulation Introduction An interpreter is a program written in
9/23/2014. Why study? Lambda calculus. Church Rosser theorem Completeness of Lambda Calculus: Turing Complete
Dr A Sahu Dept of Computer Science & Engineering IIT Guwahati Why study? Lambda calculus Syntax Evaluation Relationship to programming languages Church Rosser theorem Completeness of Lambda Calculus: Turing
Functional Programming. Pure Functional Languages
Functional Programming Pure functional PLs S-expressions cons, car, cdr Defining functions read-eval-print loop of Lisp interpreter Examples of recursive functions Shallow, deep Equality testing 1 Pure
News and information! Review: Java Programs! Feedback after Lecture 2! Dead-lines for the first two lab assignment have been posted.!
True object-oriented programming: Dynamic Objects Reference Variables D0010E Object-Oriented Programming and Design Lecture 3 Static Object-Oriented Programming UML" knows-about Eckel: 30-31, 41-46, 107-111,
Constraint-based Analysis. Harry Xu CS 253/INF 212 Spring 2013
Constraint-based Analysis Harry Xu CS 253/INF 212 Spring 2013 Acknowledgements Many slides in this file were taken from Prof. Crista Lope s slides on functional programming as well as slides provided by
Processadors de Llenguatge II. Functional Paradigm. Pratt A.7 Robert Harper s SML tutorial (Sec II)
Processadors de Llenguatge II Functional Paradigm Pratt A.7 Robert Harper s SML tutorial (Sec II) Rafael Ramirez Dep Tecnologia Universitat Pompeu Fabra Paradigm Shift Imperative Paradigm State Machine
Implementing Continuations
Implementing Continuations sk and dbtucker 2002-10-18 1 Changing Representations Now that we ve seen how continuations work, let s study how to implement them in an interpreter. For this lecture onward,
D0010E Object- oriented programming and design. Today. Today An introduc<on to the basic syntax and seman<cs of Java
D0010E Object- oriented programming and design An introduc
CS 360: Programming Languages Lecture 12: More Haskell
CS 360: Programming Languages Lecture 12: More Haskell Geoffrey Mainland Drexel University Adapted from Brent Yorgey s course Introduction to Haskell. Section 1 Administrivia Administrivia Homework 5 due
Project 1: Scheme Pretty-Printer
Project 1: Scheme Pretty-Printer CSC 4101, Fall 2017 Due: 7 October 2017 For this programming assignment, you will implement a pretty-printer for a subset of Scheme in either C++ or Java. The code should
λ calculus Function application Untyped λ-calculus - Basic Idea Terms, Variables, Syntax β reduction Advanced Formal Methods
Course 2D1453, 2006-07 Advanced Formal Methods Lecture 2: Lambda calculus Mads Dam KTH/CSC Some material from B. Pierce: TAPL + some from G. Klein, NICTA Alonzo Church, 1903-1995 Church-Turing thesis First
Writing a Fraction Class
Writing a Fraction Class So far we have worked with floa0ng-point numbers but computers store binary values, so not all real numbers can be represented precisely In applica0ons where the precision of real
Programming Languages Fall 2014
Programming Languages Fall 2014 Lecture 7: Simple Types and Simply-Typed Lambda Calculus Prof. Liang Huang huang@qc.cs.cuny.edu 1 Types stuck terms? how to fix it? 2 Plan First I For today, we ll go back
Programming Languages Fall 2013
Programming Languages Fall 2013 Lecture 7: Simple Types and Simply-Typed Lambda Calculus Prof. Liang Huang huang@qc.cs.cuny.edu Types stuck terms? how to fix it? Plan First I For today, we ll go back to
Principles of Programming Languages COMP251: Functional Programming in Scheme (and LISP)
Principles of Programming Languages COMP251: Functional Programming in Scheme (and LISP) Prof. Dekai Wu Department of Computer Science and Engineering The Hong Kong University of Science and Technology
Fundamental Concepts. Chapter 1
Chapter 1 Fundamental Concepts This book is about the mathematical foundations of programming, with a special attention on computing with infinite objects. How can mathematics help in programming? There
Department of Computer Science COMP The Programming Competency Test
The Australian National University Faculty of Engineering & Information Technology Department of Computer Science COMP1120-2003-01 The Programming Competency Test 1 Introduction The purpose of COMP1120
Class 6: Efficiency in Scheme
Class 6: Efficiency in Scheme SI 413 - Programming Languages and Implementation Dr. Daniel S. Roche United States Naval Academy Fall 2011 Roche (USNA) SI413 - Class 6 Fall 2011 1 / 10 Objects in Scheme
Proofs about Programs
Proofs about Programs Program Verification (Rosen, Sections 5.5) TOPICS Program Correctness Preconditions & Postconditions Program Verification Assignment Statements Conditional Statements Loops Composition
Scheme Quick Reference
Scheme Quick Reference COSC 18 Fall 2003 This document is a quick reference guide to common features of the Scheme language. It is not intended to be a complete language reference, but it gives terse summaries
On Academic Dishonesty. Declarative Computation Model. Single assignment store. Single assignment store (2) Single assignment store (3)
Declarative Computation Model Single assignment store (VRH 2.2) Kernel language syntax (VRH 2.3) Carlos Varela RPI October 6, 2009 Adapted with permission from: Seif Haridi KTH Peter Van Roy UCL On Academic
Classes & Objects CMSC 202
Classes & Objects CMSC 202 Programming & Abstrac9on All programming languages provide some form of abstrac'on Also called informa'on hiding Separa9ng how one uses a program and how the program has been
Project 5 - The Meta-Circular Evaluator
MASSACHVSETTS INSTITVTE OF TECHNOLOGY Department of Electrical Engineering and Computer Science 6.001 Structure and Interpretation of Computer Programs Fall Semester, 2005 Project 5 - The Meta-Circular
Ruby: Introduction, Basics
Ruby: Introduction, Basics Computer Science and Engineering College of Engineering The Ohio State University Lecture 4 Ruby vs Java: Similarities Imperative and object-oriented Classes and instances (ie
Delayed Expressions Fall 2017 Discussion 9: November 8, Iterables and Iterators. For Loops. Other Iterable Uses
CS 6A Delayed Expressions Fall 07 Discussion 9: November 8, 07 Iterables and Iterators An iterable is any container that can be processed sequentially. Examples include lists, tuples, strings, and dictionaries.
How to Design Programs
How to Design Programs How to (in Racket): represent data variants trees and lists write functions that process the data See also http://www.htdp.org/ 1 Running Example: GUIs Pick a fruit: Apple Banana
CSc 10200! Introduction to Computing. Lecture 2-3 Edgardo Molina Fall 2013 City College of New York
CSc 10200! Introduction to Computing Lecture 2-3 Edgardo Molina Fall 2013 City College of New York 1 C++ for Engineers and Scientists Third Edition Chapter 2 Problem Solving Using C++ 2 Objectives In this
Working with recursion
Working with recursion Readings: HtDP, sections 11, 12, 13 (Intermezzo 2). We can extend the idea of a self-referential definition to defining the natural numbers, which leads to the use of recursion in
Abstracting Definitional Interpreters
Abstracting Definitional Interpreters David Darais University of Maryland Nicholas Labich University of Maryland Phúc C. Nguyễn University of Maryland David Van Horn University of Maryland Does my program
CISC-124. Casting. // this would fail because we can t assign a double value to an int // variable
CISC-124 20180122 Today we looked at casting, conditionals and loops. Casting Casting is a simple method for converting one type of number to another, when the original type cannot be simply assigned to
Lab 7: OCaml 12:00 PM, Oct 22, 2017
CS17 Integrated Introduction to Computer Science Hughes Lab 7: OCaml 12:00 PM, Oct 22, 2017 Contents 1 Getting Started in OCaml 1 2 Pervasives Library 2 3 OCaml Basics 3 3.1 OCaml Types........................................
CS 415 Midterm Exam Spring 2002
CS 415 Midterm Exam Spring 2002 Name KEY Email Address Student ID # Pledge: This exam is closed note, closed book. Good Luck! Score Fortran Algol 60 Compilation Names, Bindings, Scope Functional Programming
6.00 Introduction to Computer Science and Programming Fall 2008
MIT OpenCourseWare http://ocw.mit.edu 6.00 Introduction to Computer Science and Programming Fall 2008 For information about citing these materials or our Terms of Use, visit: http://ocw.mit.edu/terms.
Whereweare. CS-XXX: Graduate Programming Languages. Lecture 7 Lambda Calculus. Adding data structures. Data + Code. What about functions
Whereweare CS-XXX: Graduate Programming Languages Lecture 7 Lambda Calculus Done: Syntax, semantics, and equivalence For a language with little more than loops and global variables Now: Didn t IMP leave
Gradual Typing for Functional Languages. Jeremy Siek and Walid Taha (presented by Lindsey Kuper)
Gradual Typing for Functional Languages Jeremy Siek and Walid Taha (presented by Lindsey Kuper) 1 Introduction 2 What we want Static and dynamic typing: both are useful! (If you re here, I assume you agree.)
Fundamentals of Artificial Intelligence COMP221: Functional Programming in Scheme (and LISP)
Fundamentals of Artificial Intelligence COMP221: Functional Programming in Scheme (and LISP) Prof. Dekai Wu Department of Computer Science and Engineering The Hong Kong University of Science and Technology
Scheme. Functional Programming. Lambda Calculus. CSC 4101: Programming Languages 1. Textbook, Sections , 13.7
Scheme Textbook, Sections 13.1 13.3, 13.7 1 Functional Programming Based on mathematical functions Take argument, return value Only function call, no assignment Functions are first-class values E.g., functions
CSE 230 Intermediate Programming in C and C++ Functions
CSE 230 Intermediate Programming in C and C++ Functions Fall 2017 Stony Brook University Instructor: Shebuti Rayana shebuti.rayana@stonybrook.edu http://www3.cs.stonybrook.edu/~cse230/ Concept of Functions
News. Programming Languages. Recap. Recap: Environments. Functions. of functions: Closures. CSE 130 : Fall Lecture 5: Functions and Datatypes
CSE 130 : Fall 2007 Programming Languages News PA deadlines shifted PA #2 now due 10/24 (next Wed) Lecture 5: Functions and Datatypes Ranjit Jhala UC San Diego Recap: Environments Phone book Variables
Object Oriented Programming. Feb 2015
Object Oriented Programming Feb 2015 Tradi7onally, a program has been seen as a recipe a set of instruc7ons that you follow from start to finish in order to complete a task. That approach is some7mes known
COMP 1130 Lambda Calculus. based on slides by Jeff Foster, U Maryland
COMP 1130 Lambda Calculus based on slides by Jeff Foster, U Maryland Motivation Commonly-used programming languages are large and complex ANSI C99 standard: 538 pages ANSI C++ standard: 714 pages Java
CIS 194: Homework 6. Due Monday, February 25. Fibonacci numbers
CIS 194: Homework 6 Due Monday, February 25 Files you should submit: Fibonacci.hs This week we learned about Haskell s lazy evaluation. This homework assignment will focus on one particular consequence
Ruby: Introduction, Basics
Ruby: Introduction, Basics Computer Science and Engineering College of Engineering The Ohio State University Lecture 3 Ruby vs Java: Similarities Imperative and object-oriented Classes and instances (ie
15 150: Principles of Functional Programming. More about Higher-Order Functions
15 150: Principles of Functional Programming More about Higher-Order Functions Michael Erdmann Spring 2018 1 Topics Currying and uncurrying Staging computation Partial evaluation Combinators 2 Currying
CSci 4223 Lecture 12 March 4, 2013 Topics: Lexical scope, dynamic scope, closures
CSci 4223 Lecture 12 March 4, 2013 Topics: Lexical scope, dynamic scope, closures 1 Lexical Scope SML, and nearly all modern languages, follow the Rule of Lexical Scope: the body of a function is evaluated
Lecture 3 Tao Wang 1
Lecture 3 Tao Wang 1 Objectives In this chapter, you will learn about: Arithmetic operations Variables and declaration statements Program input using the cin object Common programming errors C++ for Engineers
Review Analyzing Evaluator. CS61A Lecture 25. What gets returned by mc-eval? (not analyzing eval) REVIEW What is a procedure?
2 1 Review Analyzing Evaluator CS61A Lecture 2011-08-02 Colleen Lewis What s look like What the output of analyze was Fact: The body of a lambda gets analyzed! We can give names to analyzed lambdas What
Lambda Calculus. Type Systems, Lectures 3. Jevgeni Kabanov Tartu,
Lambda Calculus Type Systems, Lectures 3 Jevgeni Kabanov Tartu, 13.02.2006 PREVIOUSLY ON TYPE SYSTEMS Arithmetical expressions and Booleans Evaluation semantics Normal forms & Values Getting stuck Safety
CIS 500 Software Foundations Fall September 25
CIS 500 Software Foundations Fall 2006 September 25 The Lambda Calculus The lambda-calculus If our previous language of arithmetic expressions was the simplest nontrivial programming language, then the
Overview. A mathema5cal proof technique Proves statements about natural numbers 0,1,2,... (or more generally, induc+vely defined objects) Merge Sort
Goals for Today Induc+on Lecture 22 Spring 2011 Be able to state the principle of induc+on Iden+fy its rela+onship to recursion State how it is different from recursion Be able to understand induc+ve proofs
Scheme: Data. CS F331 Programming Languages CSCE A331 Programming Language Concepts Lecture Slides Monday, April 3, Glenn G.
Scheme: Data CS F331 Programming Languages CSCE A331 Programming Language Concepts Lecture Slides Monday, April 3, 2017 Glenn G. Chappell Department of Computer Science University of Alaska Fairbanks ggchappell@alaska.edu
Tail Recursion. ;; a recursive program for factorial (define fact (lambda (m) ;; m is non-negative (if (= m 0) 1 (* m (fact (- m 1))))))
Tail Recursion 1 Tail Recursion In place of loops, in a functional language one employs recursive definitions of functions. It is often easy to write such definitions, given a problem statement. Unfortunately,
Racket: Modules, Contracts, Languages
Racket: Modules, Contracts, Languages Advanced Functional Programming Jean-Noël Monette November 2013 1 Today Modules are the way to structure larger programs in smaller pieces. Modules can import and
List Processing in Ocaml
CS251 Programming Languages Handout # 14 Prof. Lyn Turbak February 2, 2007 Wellesley College List Processing in Ocaml Given a list of integers ns, suppose we want to return a new list of the same length