# Shell CSCE 314 TAMU. Higher Order Functions

Save this PDF as:

Size: px
Start display at page:

## Transcription

1 1 CSCE 314: Programming Languages Dr. Dylan Shell Higher Order Functions

2 2 Higher-order Functions A function is called higher-order if it takes a function as an argument or returns a function as a result. twice is higher-order twice :: (a a) a a twice f x f (f x) because it takes a function as its first argument. Note: Higher-order functions are very common in Haskell (and in functional programming). Writing higher-order functions is crucial practice for effective programming in Haskell, and for understanding others code.

3 3 Why Are They Useful? Common programming idioms can be encoded as functions within the language itself. Domain specific languages can be defined as collections of higher-order functions. For example, higher-order functions for processing lists. Algebraic properties of higher-order functions can be used to reason about programs.

4 4 Shell CSCE 314 TAMU The Map Function The higher-order library function called map applies a function to every element of a list. map :: (a b) [a] [b] > map (+1) [1,3,5,7] [2,4,6,8] The map function can be defined in a particularly simple manner using a list comprehension: map f xs [f x x xs] Alternatively, it can also be defined using recursion: map f [] [] map f (x:xs) f x : map f xs

5 5 Shell CSCE 314 TAMU The Filter Function The higher-order library function filter selects every element from a list that satisfies a predicate. filter :: (a Bool) [a] [a] > filter even [1..10] [2,4,6,8,10] Filter can be defined using a list comprehension: filter p xs [x x xs, p x] Alternatively, it can also be defined using recursion: filter p [] [] filter p (x:xs) p x x : filter p xs otherwise filter p xs

6 6 The foldr Function A number of functions on lists can be defined using the following simple pattern of recursion: f [] v 0 f (x:xs) x f xs f maps the empty list to some value v, and any non-empty list to some function applied to its head and f of its tail.

7 7 sum [] 0 sum (x:xs) x + sum xs v product [] 1 product (x:xs) x * product xs v 0 1 * and [] True and (x:xs) x && and xs v 0 True &&

8 8 The higher-order library function foldr (fold right) encapsulates this simple pattern of recursion, with the function and the value v as arguments. sum foldr (+) 0 product foldr (*) 1 or and foldr ( ) False foldr (&&) True

9 9 foldr itself can be defined using recursion: foldr :: (a b b) b [a] b foldr f v [] v foldr f v (x:xs) f x (foldr f v xs) However, it is best to think of foldr non-recursively, as simultaneously replacing each (:) in a list by a given function, and [] by a given value.

10 10 sum [1,2,3] foldr (+) 0 [1,2,3] foldr (+) 0 (1:(2:(3:[]))) 1+(2+(3+0)) 6 Replace each (:) by (+) and [] by 0.

11 11 product [1,2,3] foldr (*) 1 [1,2,3] foldr (*) 1 (1:(2:(3:[]))) 1*(2*(3*1)) 6 Replace each (:) by (*) and [] by 1.

12 12 Other foldr Examples Even though foldr encapsulates a simple pattern of recursion, it can be used to define many more functions than might first be expected. Recall the length function: length length [] 0 :: [a] Int length (_:xs) 1 + length xs

13 13 length [1,2,3] length (1:(2:(3:[]))) 1+(1+(1+0)) 3 Hence, we have: length foldr (\_ n -> 1+n) 0 Replace each (:) by λ_ n 1+n and [] by 0

14 Now the reverse function: reverse [] [] Shell CSCE 314 TAMU reverse (x:xs) reverse xs ++ [x] reverse [1,2,3] reverse (1:(2:(3:[]))) (([] ++ [3]) ++ [2]) ++ [1] [3,2,1] Hence, we have: Replace each (:) by λx xs xs ++ [x] and [] by [] reverse foldr (\x xs -> xs ++ [x]) [] Here, the append function (++) has a particularly compact definition using foldr: (++ ys) foldr (:) ys Replace each (:) by (:) and [] by ys. 14

15 Why Is foldr Useful? Some recursive functions on lists, such as sum, are simpler to define using foldr. Properties of functions defined using foldr can be proved using algebraic properties of foldr. Advanced program optimizations can be simpler if foldr is used in place of explicit recursion. 15

16 16 foldr and foldl Shell CSCE 314 TAMU foldr :: (a b b) b [a] b foldr f v [] v foldr f v (x:xs) f x (foldr f v xs) foldl :: (a b a) a [b] a foldl f v [] v foldl f v (x:xs) foldl f (f v x) xs foldr 1 : 2 : 3 : [] > (1 + (2 + (3 + 0))) foldl 1 : 2 : 3 : [] > (((0 + 1) + 2) + 3)

17 17 Other Library Functions The library function (.) returns the composition of two functions as a single function. (.) :: (b -> c) -> (a -> b) -> (a -> c) f. g \x -> f (g x) odd :: Int Bool odd not. even Exercise: Define filterout p xs that retains elements that do not satisfy p. filterout p xs filter (not. p) xs > filterout odd [1..10] [2,4,6,8,10]

18 18 The library function all decides if every element of a list satisfies a given predicate. all :: (a Bool) [a] Bool all p xs and [p x x xs] > all even [2,4,6,8,10] True

19 19 Conversely the library function any decides if at least one element of a list satisfies a predicate. any :: (a Bool) [a] Bool any p xs or [p x x xs] > any isspace "abc def" True

20 20 The library function takewhile selects elements from a list while a predicate holds of all the elements. takewhile :: (a Bool) [a] [a] takewhile p [] [] takewhile p (x:xs) p x x : takewhile p xs otherwise [] > takewhile isalpha "abc def" "abc"

21 21 Dually, the function dropwhile removes elements while a predicate holds of all the elements. dropwhile :: (a Bool) [a] [a] dropwhile p [] [] dropwhile p (x:xs) p x dropwhile p xs otherwise x:xs > dropwhile isspace " abc" "abc"

22 22 filter, map and foldr Typical use is to select certain elements, and then perform a mapping, for example, sumsquaresofpos ls foldr (+) 0 (map (^2) (filter (> 0) ls)) > sumsquaresofpos [-4,1,3,-8,10] 110 In pieces: keeppos filter (> 0) mapsquare map (^2) sum foldr (+) 0 sumsquaresofpos ls sum (mapsquare (keeppos ls)) Alternative definition: sumsquaresofpos sum. mapsquare. keeppos Shell CSCE 314 TAMU

23 23 Exercises (1) What are higher-order functions that return functions as results better known as? (2) Express the comprehension [f x x xs, p x] using the functions map and filter. (3) Redefine map f and filter p using foldr.

### Shell CSCE 314 TAMU. Functions continued

1 CSCE 314: Programming Languages Dr. Dylan Shell Functions continued 2 Outline Defining Functions List Comprehensions Recursion 3 A Function without Recursion Many functions can naturally be defined in

### Lecture 4: Higher Order Functions

Lecture 4: Higher Order Functions Søren Haagerup Department of Mathematics and Computer Science University of Southern Denmark, Odense September 26, 2017 HIGHER ORDER FUNCTIONS The order of a function

### CSCE 314 Programming Languages. Monadic Parsing

CSCE 314 Programming Languages Monadic Parsing Dr. Hyunyoung Lee 1 What is a Parser? A parser is a program that takes a string of characters (or a set of tokens) as input and determines its syntactic structure.

INTRODUCTION TO HASKELL PRINCIPLES OF PROGRAMMING LANGUAGES Norbert Zeh Winter 2018 Dalhousie University 1/81 HASKELL: A PURELY FUNCTIONAL PROGRAMMING LANGUAGE Functions are first-class values: Can be

### Week 5 Tutorial Structural Induction

Department of Computer Science, Australian National University COMP2600 / COMP6260 Formal Methods in Software Engineering Semester 2, 2016 Week 5 Tutorial Structural Induction You should hand in attempts

### A tour of the Haskell Prelude

A tour of the Haskell Prelude Bernie Pope 2001 1 Haskell The Haskell language was conceived during a meeting held at the 1987 Functional Programming and Computer Architecture conference (FPCA 87). At the

### Lecture 21: Functional Programming in Python. List Comprehensions

The University of North Carolina at Chapel Hill Spring 2002 Lecture 21: Functional Programming in March 1 1 List Comprehensions Haskell Lists can be defined by enumeration using list comprehensions Syntax:

### Using Strategies for Assessment of Functional Programming Exercises

Using Strategies for Assessment of Functional Programming Exercises Ir. Alex Gerdes Joint work with prof. dr. Johan Jeuring and dr. Bastiaan Heeren Open Universiteit Nederland School of Computer Science

### Informatics 1 Functional Programming Lecture 7. Map, filter, fold. Don Sannella University of Edinburgh

Informatics 1 Functional Programming Lecture 7 Map, filter, fold Don Sannella University of Edinburgh Part I Map Squares *Main> squares [1,-2,3] [1,4,9] squares :: [Int] -> [Int] squares xs [ x*x x

### Continuation Passing Style. Continuation Passing Style

161 162 Agenda functional programming recap problem: regular expression matcher continuation passing style (CPS) movie regular expression matcher based on CPS correctness proof, verification change of

### Topic 5: Higher Order Functions

Topic 5: Higher Order Functions 1 Recommended Exercises and Readings From Haskell: The craft of functional programming (3 rd Ed.) Exercises: 10.1, 10.2, 10.3, 10.4, 10.5, 10.6, 10.7, 10.8, 10.9, 10.10,

### Efficient Mergesort. Christian Sternagel. August 28, 2014

Efficient Mergesort Christian Sternagel August 28, 2014 Abstract We provide a formalization of the mergesort algorithm as used in GHC s Data.List module, proving correctness and stability. Furthermore,

### PROGRAMMING IN HASKELL. Chapter 2 - First Steps

PROGRAMMING IN HASKELL Chapter 2 - First Steps 0 The Hugs System Hugs is an implementation of Haskell 98, and is the most widely used Haskell system; The interactive nature of Hugs makes it well suited

### Efficient Mergesort. Christian Sternagel. October 11, 2017

Efficient Mergesort Christian Sternagel October 11, 2017 Abstract We provide a formalization of the mergesort algorithm as used in GHC s Data.List module, proving correctness and stability. Furthermore,

### Lecture 2: List algorithms using recursion and list comprehensions

Lecture 2: List algorithms using recursion and list comprehensions Søren Haagerup Department of Mathematics and Computer Science University of Southern Denmark, Odense September 12, 2017 Expressions, patterns

Faster Haskell Neil Mitchell www.cs.york.ac.uk/~ndm The Goal Make Haskell faster Reduce the runtime But keep high-level declarative style Full automatic - no special functions Different from foldr/build,

### Tentamen Functioneel Programmeren 2001 Informatica, Universiteit Utrecht Docent: Wishnu Prasetya

Tentamen Functioneel Programmeren 2001 Informatica, Universiteit Utrecht Docent: Wishnu Prasetya 04-05-2001, 09.00-12.00, Educatorium Gamma This test consists of two parts. For the first part, which is

### Tuples. CMSC 330: Organization of Programming Languages. Examples With Tuples. Another Example

CMSC 330: Organization of Programming Languages OCaml 2 Higher Order Functions Tuples Constructed using (e1,..., en) Deconstructed using pattern matching Patterns involve parens and commas, e.g., (p1,p2,

### Lists. Michael P. Fourman. February 2, 2010

Lists Michael P. Fourman February 2, 2010 1 Introduction The list is a fundamental datatype in most functional languages. ML is no exception; list is a built-in ML type constructor. However, to introduce

### CSE 130 [Winter 2014] Programming Languages

CSE 130 [Winter 2014] Programming Languages Higher-Order Functions! Ravi Chugh! Jan 23 Today s Plan A little more practice with recursion Base Pattern Base Expression Induction Pattern Induction Expression

### A Sudoku Solver Pruning (3A)

A Sudoku Solver Pruning (3A) Richard Bird Implementation Copyright (c) 2016 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation

### CSci 4223 Principles of Programming Languages

CSci 4223 Principles of Programming Languages Lecture 11 Review Features learned: functions, tuples, lists, let expressions, options, records, datatypes, case expressions, type synonyms, pattern matching,

### Reasoning about programs. Chapter 9 of Thompson

Reasoning about programs Chapter 9 of Thompson Proof versus testing A proof will state some property of a program that holds for all inputs. Testing shows only that a property holds for a particular set

### INFOB3TC Solutions for the Exam

Department of Information and Computing Sciences Utrecht University INFOB3TC Solutions for the Exam Johan Jeuring Monday, 13 December 2010, 10:30 13:00 lease keep in mind that often, there are many possible

### What s in Main. Tobias Nipkow. December 5, Abstract

What s in Main Tobias Nipkow December 5, 2013 Abstract This document lists the main types, functions and syntax provided by theory Main. It is meant as a quick overview of what is available. For infix

### Introduction to Functional Programming in Haskell 1 / 56

Introduction to Functional Programming in Haskell 1 / 56 Outline Why learn functional programming? The essence of functional programming What is a function? Equational reasoning First-order vs. higher-order

### CSCI-GA Final Exam

CSCI-GA 2110-003 - Final Exam Instructor: Thomas Wies Name: Sample Solution ID: You have 110 minutes time. There are 7 assignments and you can reach 110 points in total. You can solve the exercises directly

### CSc 372. Comparative Programming Languages. 3 : Haskell Introduction. Department of Computer Science University of Arizona

1/17 CSc 372 Comparative Programming Languages 3 : Haskell Introduction Department of Computer Science University of Arizona collberg@gmail.com Copyright c 2013 Christian Collberg 2/17 What is Haskell?

### CSCE 314 Programming Languages

CSCE 314 Programming Languages Haskell 101 Dr. Hyunyoung Lee 1 Contents 1. Historical Background of Haskell 2. Lazy, Pure, and Functional Language 3. Using ghc and ghci 4. Functions 5. Haskell Scripts

### Functional Programming TDA 452, DIT 142

Chalmers Göteborgs Universitet 2018-01-11 Examiner: Thomas Hallgren, D&IT, Answering questions at approx 15.00 (or by phone) Functional Programming TDA 452, DIT 142 2018-01-11 14.00 18.00 Samhällsbyggnad

PP 2016/17 Unit 16 Erlang Modules, Functions and Control Structures 1/31 Programming Paradigms Unit 16 Erlang Modules, Functions and Control Structures J. Gamper Free University of Bozen-Bolzano Faculty

### CS Lecture 6: Map and Fold. Prof. Clarkson Spring Today s music: Selections from the soundtrack to 2001: A Space Odyssey

CS 3110 Lecture 6: Map and Fold Prof. Clarkson Spring 2015 Today s music: Selections from the soundtrack to 2001: A Space Odyssey Review Course so far: Syntax and semantics of (most of) OCaml Today: No

### Informatics 1 Functional Programming Lecture 12. Data Abstraction. Don Sannella University of Edinburgh

Informatics 1 Functional Programming Lecture 12 Data Abstraction Don Sannella University of Edinburgh Part I Sets as lists without abstraction We will look again at our four ways of implementing sets.

### Generative and accumulative recursion. What is generative recursion? Example revisited: GCD. Readings: Sections 25, 26, 27, 30, 31

Generative and accumulative recursion Readings: Sections 25, 26, 27, 30, 31 Some subsections not explicitly covered in lecture Section 27.2 technique applied to strings CS 135 Fall 2017 11: Generative

### CS 4110 Programming Languages & Logics. Lecture 27 Recursive Types

CS 4110 Programming Languages & Logics Lecture 27 Recursive Types 4 November 2016 Announcements 2 My office hours are at the normal time today but canceled on Monday Guest lecture by Seung Hee Han on Monday

### CS Lecture 6: Map and Fold. Prof. Clarkson Fall Today s music: Selections from the soundtrack to 2001: A Space Odyssey

CS 3110 Lecture 6: Map and Fold Prof. Clarkson Fall 2014 Today s music: Selections from the soundtrack to 2001: A Space Odyssey Review Features so far: variables, operators, let expressions, if expressions,

CIS552: Advanced Programming Handout 8 What is a Parser? A parser is a program that analyzes a piece of text to deine its structure (and, typically, returns a tree representing this structure). The World

### 02157 Functional Programming Tagged values and Higher-order list functions

Tagged values and Higher-order list functions nsen 1 DTU Informatics, Technical University of Denmark Tagged values and Higher-order list functions MRH 27/09/2012 Part I: Disjoint Sets An Example A shape

### Haskell-Tutorial. Damir Medak Gerhard Navratil. Institute for Geoinformation Technical University Vienna. February 2003

Haskell-Tutorial Damir Medak Gerhard Navratil Institute for Geoinformation Technical University Vienna February 2003 There are numerous books on functional programming. These books are good, but usually

### Scheme: Strings Scheme: I/O

Scheme: Strings Scheme: I/O CS F331 Programming Languages CSCE A331 Programming Language Concepts Lecture Slides Wednesday, April 5, 2017 Glenn G. Chappell Department of Computer Science University of

### List Processing Primitives for Parallel Computation

List Processing Primitives for Parallel Computation Tom Axford School of Computer Science, University of Birmingham Birmingham B15 2TT, U.K. Mike Joy Department of Computer Science, University of Warwick

### 02157 Functional Programming. Michael R. Ha. Tagged values and Higher-order list functions. Michael R. Hansen

Tagged values and Higher-order list functions nsen 1 DTU Compute, Technical University of Denmark Tagged values and Higher-order list functions MRH 3/10/2017 Overview Disjoint union (or Tagged Values)

### List Processing in SML

List Processing in SML CS251 Programming Languages Spring 2017 Lyn Turbak, Meera Hejmadi, Mary Ruth Ngo, & Angela Wu Department of Computer Science Wellesley College Consing Elements into Lists - val nums

### Recursive Data and Recursive Functions

Structural Recursion and Induction Of all the material in this course, this lesson is probably the hardest for students to grasp at first, but it s also one of the most fundamental. Once you understand

### An Introduction to Programming in Haskell. Gabriel J. Ferrer Hendrix College

An Introduction to Programming in Haskell Gabriel J. Ferrer Hendrix College Overview Functional programming Property testing Iteration Type system I/O Installation Go to: http://www.haskell.org/ Download

### List Processing in SML

CS251 Programming Languages Spring 2016, Lyn Turbak Department of Computer Science Wellesley College Consing Elements into Lists - val nums = 9 :: 4 :: 7 :: []; val nums = [9,4,7] : int list - 5 :: nums;

### Software Properties as Axioms and Theorems

Applied Software Properties as Axioms and Theorems proofs by induction or How to Write Reliable Software and know it's reliable Applied 1 Example: Multiplexor Function Problem: Multiplex two sequences

### CSc 372. Comparative Programming Languages. 8 : Haskell Function Examples. Department of Computer Science University of Arizona

1/43 CSc 372 Comparative Programming Languages 8 : Haskell Function Examples Department of Computer Science University of Arizona collberg@gmail.com Copyright c 2013 Christian Collberg Functions over Lists

### 1 Tutorial 1: The simplest case.

1 Tutorial 1: The simplest case. This is the simplest example of using the GenCheck framework to test an implementation against a specification. This module contains a revlist (reverse) function that reverses

### # true;; - : bool = true. # false;; - : bool = false 9/10/ // = {s (5, "hi", 3.2), c 4, a 1, b 5} 9/10/2017 4

Booleans (aka Truth Values) Programming Languages and Compilers (CS 421) Sasa Misailovic 4110 SC, UIUC https://courses.engr.illinois.edu/cs421/fa2017/cs421a # true;; - : bool = true # false;; - : bool

### Lecture 6: Sequential Sorting

15-150 Lecture 6: Sequential Sorting Lecture by Dan Licata February 2, 2012 Today s lecture is about sorting. Along the way, we ll learn about divide and conquer algorithms, the tree method, and complete

### Functions and Recursion. Dr. Philip Cannata 1

Functions and Recursion Dr. Philip Cannata 1 10 High Level Languages This Course Java (Object Oriented) Jython in Java Relation ASP RDF (Horn Clause Deduction, Semantic Web) Dr. Philip Cannata 2 let transformation,

### 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.

### 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

### Programming in Haskell Aug-Nov 2015

Programming in Haskell Aug-Nov 2015 LECTURE 14 OCTOBER 1, 2015 S P SURESH CHENNAI MATHEMATICAL INSTITUTE Enumerated data types The data keyword is used to define new types data Bool = False True data Day

### CSc 520. Gofer III. Accumulative Recursion. Accumulative Recursion... Stack Recursion. Principles of Programming Languages. Christian Collberg

Slide 7 2 Accumulative Recursion We can sometimes get a more efficient solution by giving the function one extra argument, the accumulator, which is used to gather the final result. We will need to use

### functional programming in Python, part 2

Programming Languages Week 2 functional programming in Python, part 2 College of Information Science and Engineering Ritsumeikan University review of part 1 eliminating assignment makes programs easier

### 3 Common Patterns in XML Processing

3 Common Patterns in XML Processing Roger L. Costello February 2011 XML Documents Contain Lists Most XML documents contain lists of elements. For example, this document contains a list of elements:

### CSC324- TUTORIAL 5. Shems Saleh* *Some slides inspired by/based on Afsaneh Fazly s slides

CSC324- TUTORIAL 5 ML Shems Saleh* *Some slides inspired by/based on Afsaneh Fazly s slides Assignment 1 2 More questions were added Questions regarding the assignment? Starting ML Who am I? Shems Saleh

### The Art of Recursion: Problem Set 10

The Art of Recursion: Problem Set Due Tuesday, November Tail recursion A recursive function is tail recursive if every recursive call is in tail position that is, the result of the recursive call is immediately

### Homework 1: Functional Programming, Haskell

Com S 541 Programming Languages 1 September 25, 2005 Homework 1: Functional Programming, Haskell Due: problems 1 and 3, Thursday, September 1, 2005; problems 4-9, Thursday, September 15, 2005; remaining

### About coding style Spring February 9, 2004

About codg style 15-212 Sprg 2004 February 9, 2004 Contents 1 Correctness 2 2 Specification 2 3 Style 2 3.1 if-then- Expressions... 3 3.1.1 Boolean if-then- Expressions... 3 3.1.2 if-then- stead of Pattern

### PROGRAMMING IN HASKELL. Chapter 2 - First Steps

PROGRAMMING IN HASKELL Chapter 2 - First Steps 0 Glasgow Haskell Compiler GHC is the leading implementation of Haskell, and comprises a compiler and interpreter; The interactive nature of the interpreter

### Programming with Math and Logic

.. Programming with Math and Logic an invitation to functional programming Ed Morehouse Wesleyan University The Plan why fp? terms types interfaces The What and Why of Functional Programming Computing

### User-Defined Algebraic Data Types

72 Static Semantics User-Defined Types User-Defined Algebraic Data Types An algebraic data type declaration has the general form: data cx T α 1... α k = K 1 τ 11... τ 1k1... K n τ n1... τ nkn introduces

### PROGRAMMING IN HASKELL. Chapter 2 - First Steps

PROGRAMMING IN HASKELL Chapter 2 - First Steps 0 The Hugs System Hugs is an implementation of Haskell 98, and is the most widely used Haskell system; The interactive nature of Hugs makes it well suited

CSci 450: Org. of Programming Languages Overloading and Type Classes H. Conrad Cunningham 27 October 2017 (after class) Contents 9 Overloading and Type Classes 1 9.1 Chapter Introduction.........................

### CSCE 110 Dr. Amr Goneid Exercise Sheet (7): Exercises on Recursion (Solutions)

CSCE 110 Dr. Amr Goneid Exercise Sheet (7): Exercises on Recursion (Solutions) Consider the following recursive function: int what ( int x, int y) if (x > y) return what (x-y, y); else if (y > x) return

### Propositional Calculus. Math Foundations of Computer Science

Propositional Calculus Math Foundations of Computer Science Propositional Calculus Objective: To provide students with the concepts and techniques from propositional calculus so that they can use it to

### Patterns The Essence of Functional Programming

Patterns The Essence of Functional Programming Up to now we have defined functions in a very traditional way: function name + variable name parameters Read Chap 7 In functional programming we can exploit

### CS 457/557: Functional Languages

CS 457/557: Functional Languages From Trees to Type Classes Mark P Jones Portland State University 1 Trees:! " There are many kinds of tree data structure.! " For example: data BinTree a = Leaf a BinTree

### Booleans (aka Truth Values) Programming Languages and Compilers (CS 421) Booleans and Short-Circuit Evaluation. Tuples as Values.

Booleans (aka Truth Values) Programming Languages and Compilers (CS 421) Elsa L Gunter 2112 SC, UIUC https://courses.engr.illinois.edu/cs421/fa2017/cs421d # true;; - : bool = true # false;; - : bool =

### λ calculus is inconsistent

Content Rough timeline COMP 4161 NICTA Advanced Course Advanced Topics in Software Verification Gerwin Klein, June Andronick, Toby Murray λ Intro & motivation, getting started [1] Foundations & Principles

### Accurate Step Counting

Accurate Step Counting Catherine Hope and Graham Hutton School of Computer Science and IT University of Nottingham, UK {cvh,gmh}@cs.nott.ac.uk Abstract Starting with an evaluator for a language, an abstract

### Programming Languages Fall 2013

Programming Languages Fall 2013 Lecture 2: types Prof. Liang Huang huang@qc.cs.cuny.edu Recap of Lecture 1 functional programming vs. imperative programming basic Haskell syntax function definition lazy

### A Brief Introduction to Scheme (II)

A Brief Introduction to Scheme (II) Philip W. L. Fong pwlfong@cs.uregina.ca Department of Computer Science University of Regina Regina, Saskatchewan, Canada Lists Scheme II p.1/29 Lists Aggregate data

### General Computer Science (CH ) Fall 2016 SML Tutorial: Practice Problems

General Computer Science (CH08-320101) Fall 2016 SML Tutorial: Practice Problems November 30, 2016 Abstract This document accompanies the traditional SML tutorial in GenCS. It contains a sequence of simple

### Recursion. Lars-Henrik Eriksson. Functional Programming 1. Based on a presentation by Tjark Weber and notes by Sven-Olof Nyström

Lars-Henrik Eriksson Functional Programming 1 Based on a presentation by Tjark Weber and notes by Sven-Olof Nyström Tjark Weber (UU) Recursion 1 / 41 Comparison: Imperative/Functional Programming Comparison:

### Lesson 13: Exploring Factored Form

Opening Activity Below is a graph of the equation y = 6(x 3)(x + 2). It is also the graph of: y = 3(2x 6)(x + 2) y = 2(3x 9)(x + 2) y = 2(x 3)(3x + 6) y = 3(x 3)(2x + 4) y = (3x 9)(2x + 4) y = (2x 6)(3x

### FizzBuzz in Haskell by Embedding a Domain-Specific Language

FizzBuzz in Haskell by Embedding a Domain-Specific Language by Maciej Piróg maciej.adam.pirog@gmail.com April 23, 2014 The FizzBuzz problem is simple but not trivial, which makes it a popular puzzle during

### Abstract Types, Algebraic Types, and Type Classes

Informatics 1 Functional Programming Lectures 13 and 14 Monday 9 and Tuesday 10 November 2009 Abstract Types, Algebraic Types, and Type Classes Philip Wadler University of Edinburgh Reminders Tutorial

Advanced features of Functional Programming (Haskell) Polymorphism and overloading January 10, 2017 Monomorphic and polymorphic types A (data) type specifies a set of values. Examples: Bool: the type of

### CIS 120 Midterm I October 2, Name (printed): Username (login id):

CIS 120 Midterm I October 2, 2015 Name (printed): Username (login id): My signature below certifies that I have complied with the University of Pennsylvania s Code of Academic Integrity in completing this

### CS Lecture 5: Pattern Matching. Prof. Clarkson Fall Today s music: Puff, the Magic Dragon by Peter, Paul & Mary

CS 3110 Lecture 5: Pattern Matching Prof. Clarkson Fall 2014 Today s music: Puff, the Magic Dragon by Peter, Paul & Mary Review Features so far: variables, operators, let expressions, if expressions, functions

### Instances for Free* Neil Mitchell (* Postage and packaging charges may apply)

Instances for Free* Neil Mitchell www.cs.york.ac.uk/~ndm (* Postage and packaging charges may apply) Haskell has type classes f :: Eq a => a -> a -> Bool f x y = x == y Polymorphic (for all type a) Provided

### 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

### Principles of Programming Languages Topic: Functional Programming Professor L. Thorne McCarty Spring 2003

Principles of Programming Languages Topic: Functional Programming Professor L. Thorne McCarty Spring 2003 CS 314, LS, LTM: Functional Programming 1 Scheme A program is an expression to be evaluated (in

### Cardinality of Sets. Washington University Math Circle 10/30/2016

Cardinality of Sets Washington University Math Circle 0/0/06 The cardinality of a finite set A is just the number of elements of A, denoted by A. For example, A = {a, b, c, d}, B = {n Z : n } = {,,, 0,,,

### 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

### The Untyped Lambda Calculus

Resources: The slides of this lecture were derived from [Järvi], with permission of the original author, by copy & x = 1 let x = 1 in... paste or by selection, annotation, or rewording. [Järvi] is in turn

### 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

### More Lambda Calculus and Intro to Type Systems

More Lambda Calculus and Intro to Type Systems Plan Heavy Class Participation Thus, wake up! Lambda Calculus How is it related to real life? Encodings Fixed points Type Systems Overview Static, Dyamic

### 15 212: Principles of Programming. Some Notes on Continuations

15 212: Principles of Programming Some Notes on Continuations Michael Erdmann Spring 2011 These notes provide a brief introduction to continuations as a programming technique. Continuations have a rich

Overloading, Type Classes, and Algebraic Datatypes Delivered by Michael Pellauer Arvind Computer Science and Artificial Intelligence Laboratory M.I.T. September 28, 2006 September 28, 2006 http://www.csg.csail.mit.edu/6.827

### 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

### arxiv: v2 [math.co] 13 Aug 2013

Orthogonality and minimality in the homology of locally finite graphs Reinhard Diestel Julian Pott arxiv:1307.0728v2 [math.co] 13 Aug 2013 August 14, 2013 Abstract Given a finite set E, a subset D E (viewed

### Synthesizing Data Structure Transformations from Input-Output Examples

Synthesizing Data Structure Transformations from Input-Output Examples John K. Feser Rice University, USA feser@rice.edu Swarat Chaudhuri Rice University, USA swarat@rice.edu Isil Dillig UT Austin, USA