Ordered Pairs, Products, Sets versus Lists, Lambda Abstraction, Database Query
|
|
- Marcus Hall
- 5 years ago
- Views:
Transcription
1 Ordered Pairs, Products, Sets versus Lists, Lambda Abstraction, Database Query Jan van Eijck May 2, 2003 Abstract Ordered pairs, products, from sets to lists, from lists to sets. Next, we take a further look at lambda abstraction, explain the use of lambda abstraction for database query, and demonstrate how lambda abstracts can be used in Haskell.
2 Ordered Pairs The two sets {a, b} and {b, a} are equal: it follows from the extensionality principle that order of presentation does not count. The ordered pair of objects a and b is denoted by (a, b). Here, a is the first and b the second coordinate of (a, b). Ordered pairs behave according to the following rule: (a, b) = (x, y) = a = x b = y. Note that (a, b) = (b, a) only holds when a = b.
3 Cartesian Products The (Cartesian) product of the sets A and B is the set of all pairs (a, b) where a A and b B. In symbols: A B = { (a, b) a A b B }. Instead of A A one usually writes A 2. Here is an implementation of the list product operation in Haskell listproduct :: [a] -> [b] -> [(a,b)] listproduct xs ys = [ (x,y) x <- xs, y <- ys ]
4 This gives: Main> listproduct [1..4] [ A.. C ] [(1, A ),(1, B ),(1, C ),(2, A ),(2, B ),(2, C ), (3, A ),(3, B ),(3, C ),(4, A ),(4, B ),(4, C )] Main> listproduct [1..4] [True, False] [(1,True),(1,False),(2,True),(2,False),(3,True), (3,False),(4,True),(4,False)]
5 Useful Product Laws For arbitrary sets A, B, C, D the following hold: 1. (A B) (C D) = (A D) (C B), 2. (A B) C = (A C) (B C); (A B) C = (A C) (B C), 3. (A B) (C D) = (A C) (B D), 4. (A B) (C D) = (A C) (A D) (B C) (B D), 5. [(A C) B] [A (B D)] (A B) (C D).
6 Example Proof To be proved: (A B) C = (A C) (B C): : Suppose that p (A B) C. Then a A B and c C exist such that p = (a, c). Thus (i) a A or (ii) a B. (i). In this case, p A C, and hence p (A C) (B C). (ii). Now p B C, and hence again p (A C) (B C). Thus p (A C) (B C). Therefore, (A B) C (A C) (B C).
7 Example Proof, continued : Conversely, assume that p (A C) (B C). Thus (i) p A C or (ii) p B C. (i). In this case a A and c C exist such that p = (a, c); a fortiori, a A B and hence p (A B) C. (ii). Now b B and c C exist such that p = (b, c); a fortiori b A B and hence, again, p (A B) C. Thus p (A B) C. Therefore, (A C) (B C) (A B) C. The required result follows using Extensionality.
8 Ordered n-tuples Ordered n-tuples over some base set A, for every n N. Definition by recursion. 1. A 0 := { }, 2. A n+1 := A A n. Note that ordered n-tuples are pairs. From Sets to Lists Finally, let A = n N An. Then A is the set of all finite lists over A. Note that the list [a, b, c, d] gets represented as the pair (a, (b, (c, (d, )))).
9 Taking Lists as Basic Definition of lists in Haskell: [] is a list. If x is an object and l is a list, then x : l is a list, provided that the types agree. The type of a list is derived from the type of its objects: if x :: a, then lists of objects of that type have type [a]. Under the typing restrictions of Haskell, it is impossible to put objects of different types together in one list. The operation (:) has type a -> [a] -> [a].
10 Lists and List Equality data [a] = [] a : [a] deriving (Eq, Ord) Prelude> :t (:) (:) :: a -> [a] -> [a] instance Eq a => Eq [a] where [] == [] = True (x:xs) == (y:ys) = x==y && xs==ys _ == _ = False
11 List Ordering instance Ord a => Ord [a] where compare [] (_:_) = LT compare [] [] = EQ compare (_:_) [] = GT compare (x:xs) (y:ys) = primcompaux x y (compare xs ys) primcompaux :: Ord a => a -> a -> Ordering -> Ordering primcompaux x y o = case compare x y of EQ -> o; LT -> LT; GT -> GT
12 List indexing Consider the list indexing function (!!) :: does the following: Prelude> [ a..]!! 0 a Prelude> [ a..]!! 3 d How would you implement this? [a] -> Int -> a that (!!) :: [a] -> Int -> a (x:_)!! 0 = x (_:xs)!! n n>0 = xs!! (n-1) (_:_)!! _ = error "!!: negative index" []!! _ = error "!!: index too large"
13 Fundamental List Operations head :: [a] -> a head (x:_) = x tail :: [a] -> [a] tail (_:xs) = xs last :: [a] -> a last [x] = x last (_:xs) = last xs init :: [a] -> [a] init [x] = [] init (x:xs) = x : init xs null :: [a] -> Bool null [] = True null (_:_) = False
14 Lambda Abstraction A very convenient notation for function construction is by means of lambda abstraction. In this notation, λx.x+1 encodes the specification x x + 1. The lambda operator is a variable binder, so λx.x + 1 and λy.y + 1 denote the same function. In fact, every time we specify a function foo in Haskell by means of foo x y z = t we can also define foo by means of: foo = \ x y z -> t If the types of x, y, z, t are known, this also specifies a domain and a range. For if x :: a, y :: b, z :: c, t :: d, then λxyz.t has type a -> b -> c -> d.
15 Lambda Abstraction (2) Haskell allows construction of functions by means of lambda abstraction: Prelude> (\x -> x + 1) 4 5 Prelude> (\s -> "hello, " ++ s) "dolly" "hello, dolly" Prelude> :t (\s -> "hello, " ++ s) \s -> "hello, " ++ s :: [Char] -> [Char] Prelude> (\x y -> x^y)
16 Lambda Abstraction (3) Such functions can be passed as arguments: Prelude> map (\x -> x + 3) [1..5] [4,5,6,7,8] Prelude> filter (\x -> x^2 < 20) [1..10] [1,2,3,4] Prelude> ((\x -> x + 1). (\y -> y + 2)) 5 8
17 List Comprehension and Database Query module DB where type WordList = [String] type DB = [WordList] db :: DB db = [ ["release", "Blade Runner", "1982"], ["release", "Alien", "1979"], ["release", "Titanic", "1997"], ["release", "Good Will Hunting", "1997"], ["release", "Pulp Fiction", "1994"], ["release", "Reservoir Dogs", "1992"], ["release", "Romeo and Juliet", "1996"],
18 ["direct", "Brian De Palma", "The Untouchables"], ["direct", "James Cameron", "Titanic"], ["direct", "James Cameron", "Aliens"], ["direct", "Ridley Scott", "Alien"], ["direct", "Ridley Scott", "Blade Runner"], ["direct", "Ridley Scott", "Thelma and Louise"], ["direct", "Gus Van Sant", "Good Will Hunting"], ["direct", "Quentin Tarantino", "Pulp Fiction"], {-... -}
19 ["play", "Leonardo DiCaprio", "Romeo and Juliet", "Romeo"], ["play", "Leonardo DiCaprio", "Titanic", "Jack Dawson"], ["play", "Robin Williams", "Good Will Hunting", "Sean McGuire"], ["play", "John Travolta", "Pulp Fiction", "Vincent Vega"], ["play", "Harvey Keitel", "Reservoir Dogs", "Mr White"], {-... -}
20 The database can be used to define the following lists of database objects, with list comprehension. characters = nub [ x ["play",_,_,x] <- db ] movies = [ x ["release",x,_] <- db ] actors = nub [ x ["play",x,_,_] <- db ] directors = nub [ x ["direct",x,_] <- db ] dates = nub [ x ["release",_,x] <- db ] universe = nub (characters ++ actors ++ directors ++ movies ++ dates)
21 Next, define lists of tuples, again by list comprehension: direct = [ (x,y) ["direct",x,y] <- db ] act = [ (x,y) ["play",x,y,_] <- db ] play = [ (x,y,z) ["play",x,y,z] <- db ] release = [ (x,y) ["release",x,y] <- db ]
22 Finally, define one placed, two placed and three placed predicates by means of lambda abstraction. charp = \ x -> elem x characters actorp = \ x -> elem x actors moviep = \ x -> elem x movies directorp = \ x -> elem x directors datep = \ x -> elem x dates actp = \ (x,y) -> elem (x,y) act releasep = \ (x,y) -> elem (x,y) release directp = \ (x,y) -> elem (x,y) direct playp = \ (x,y,z) -> elem (x,y,z) play
23 Example Queries Give me the actors that also are directors. q1 = [ x x <- actors, directorp x ] Give me all actors that also are directors, together with the films in which they were acting. q2 = [ (x,y) (x,y) <- act, directorp x ]
24 Give me all directors together with their films and their release dates. The following is wrong. q3 = [ (x,y,z) (x,y) <- direct, (y,z) <- release ] The problem is that the two ys are unrelated. In fact, this query generates an infinite list. This can be remedied by using the equality predicate as a link: q4 = [ (x,y,z) (x,y) <- direct, (u,z) <- release, y == u ]
25 A Datatype for Sets module SetEq (Set,emptySet,isEmpty,inSet,subSet, insertset,deleteset,powerset,takeset, list2set,(!!!)) where import List newtype Set a = Set [a] instance Eq a => Eq (Set a) where set1 == set2 = subset set1 set2 && subset set2 set1
26 subset :: (Eq a) => Set a -> Set a -> Bool subset (Set []) _ = True subset (Set (x:xs)) set = (inset x set) && subset (Set xs) set inset :: (Eq a) => a -> Set a -> Bool inset x (Set s) = elem x s This gives: Main> Set [2,3,3,1,1,1] == Set [1,2,3] True
27 instance (Show a) => Show (Set a) where showsprec _ (Set s) str = showset s str showset [] str = showstring "{}" str showset (x:xs) str = showchar { (shows x (sh xs str)) where sh [] str = showchar } str sh (x:xs) str = showchar, (shows x (sh xs str)) This gives: SetEq> Set [1..10] {1,2,3,4,5,6,7,8,9,10}
28 emptyset :: Set a emptyset = Set [] isempty :: Set a -> Bool isempty (Set []) = True isempty _ = False
29 insertset :: (Eq a) => a -> Set a -> Set a insertset x (Set ys) inset x (Set ys) = Set ys otherwise = Set (x:ys) deleteset :: Eq a => a -> Set a -> Set a deleteset x (Set xs) = Set (delete x xs) list2set :: Eq a => [a] -> Set a list2set [] = Set [] list2set (x:xs) = insertset x (list2set xs)
30 powerset :: Eq a => Set a -> Set (Set a) powerset (Set xs) = Set (map (\xs -> (Set xs)) (powerlist xs)) takeset :: Eq a => Int -> Set a -> Set a takeset n (Set xs) = Set (take n xs) infixl 9!!! (!!!) :: Eq a => Set a -> Int -> a (Set xs)!!! n = xs!! n
31 Five Levels From the Set Theoretic Universe module Hierarchy where import SetEq data S = Void deriving (Eq,Show) empty :: Set S empty = Set [] v0 = empty v1 = powerset v0 v2 = powerset v1 v3 = powerset v2 v4 = powerset v3 v5 = powerset v4
Lists, Lambdas and Databases
Lists, Lambdas and Databases Jan van Eijck May 17, 2005 Abstract We introduce ordered pairs, products, lists, list ordering, list comprehension. Next, we take a look at the connections between list processing
More informationSet Haskell Exercises
Set Haskell Exercises Young W. Lim 2018-11-20 Tue Young W. Lim Set Haskell Exercises 2018-11-20 Tue 1 / 71 Outline 1 Based on 2 Pardoxes and Haskell type system Using STAL.hs Paradox Types and Type Classes
More informationSet Haskell Exercises
Set Haskell Exercises Young W. Lim 2018-12-15 Sat Young W. Lim Set Haskell Exercises 2018-12-15 Sat 1 / 103 Outline 1 Based on 2 Pardoxes and Haskell type system Using STAL.hs Paradox Types and Type Classes
More informationThe List Datatype. CSc 372. Comparative Programming Languages. 6 : Haskell Lists. Department of Computer Science University of Arizona
The List Datatype CSc 372 Comparative Programming Languages 6 : Haskell Lists Department of Computer Science University of Arizona collberg@gmail.com All functional programming languages have the ConsList
More informationPROGRAMMING IN HASKELL. CS Chapter 6 - Recursive Functions
PROGRAMMING IN HASKELL CS-205 - Chapter 6 - Recursive Functions 0 Introduction As we have seen, many functions can naturally be defined in terms of other functions. factorial :: Int Int factorial n product
More informationCSCE 314 TAMU Fall CSCE 314: Programming Languages Dr. Flemming Andersen. Haskell Functions
1 CSCE 314: Programming Languages Dr. Flemming Andersen Haskell Functions 2 Outline Defining Functions List Comprehensions Recursion 3 Conditional Expressions As in most programming languages, functions
More informationInformatics 1 Functional Programming Lecture 11. Data Representation. Don Sannella University of Edinburgh
Informatics 1 Functional Programming Lecture 11 Data Representation Don Sannella University of Edinburgh Part I Complexity t = n vs t = n 2 10.4 9.6 8.8 8 7.2 6.4 5.6 4.8 4 3.2 2.4 1.6 0.8 0 0.8 1.6 2.4
More informationHaskell Types, Classes, and Functions, Currying, and Polymorphism
1 CSCE 314: Programming Languages Dr. Flemming Andersen Haskell Types, Classes, and Functions, Currying, and Polymorphism 2 Types A type is a collection of related values. For example, Bool contains the
More informationPROGRAMMING IN HASKELL. Chapter 5 - List Comprehensions
PROGRAMMING IN HASKELL Chapter 5 - List Comprehensions 0 Set Comprehensions In mathematics, the comprehension notation can be used to construct new sets from old sets. {x 2 x {1...5}} The set {1,4,9,16,25}
More informationInformatics 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.
More informationPractical Haskell. An introduction to functional programming. July 21, Practical Haskell. Juan Pedro Villa-Isaza. Introduction.
Practical Practical An introduction to functional programming July 21, 2011 Contents Practical Practical is fun, and that s what it s all about! Even if seems strange to you at first, don t give up. Learning
More informationCS 457/557: Functional Languages
CS 457/557: Functional Languages Lists and Algebraic Datatypes Mark P Jones Portland State University 1 Why Lists? Lists are a heavily used data structure in many functional programs Special syntax is
More informationHaskell 101. (Version 1 (July 18, 2012)) Juan Pedro Villa Isaza
Haskell 101 (Version 1 (July 18, 2012)) Juan Pedro Villa Isaza Haskell 101: Contents Introduction Tutorial Homework Bibliography Haskell 101: Contents Introduction Tutorial Homework Bibliography Haskell
More informationPROGRAMMING 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
More informationIt is better to have 100 functions operate one one data structure, than 10 functions on 10 data structures. A. Perlis
Chapter 14 Functional Programming Programming Languages 2nd edition Tucker and Noonan It is better to have 100 functions operate one one data structure, than 10 functions on 10 data structures. A. Perlis
More informationShell CSCE 314 TAMU. Haskell Functions
1 CSCE 314: Programming Languages Dr. Dylan Shell Haskell Functions 2 Outline Defining Functions List Comprehensions Recursion 3 Conditional Expressions As in most programming languages, functions can
More informationShell 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
More informationLogical Methods in... using Haskell Getting Started
Logical Methods in... using Haskell Getting Started Jan van Eijck May 4, 2005 Abstract The purpose of this course is to teach a bit of functional programming and logic, and to connect logical reasoning
More informationShell CSCE 314 TAMU. Higher Order Functions
1 CSCE 314: Programming Languages Dr. Dylan Shell Higher Order Functions 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.
More informationFunctional Programming in Haskell Part I : Basics
Functional Programming in Haskell Part I : Basics Madhavan Mukund Chennai Mathematical Institute 92 G N Chetty Rd, Chennai 600 017, India madhavan@cmi.ac.in http://www.cmi.ac.in/ madhavan Madras Christian
More informationCourse year Typeclasses and their instances
Course year 2016-2017 Typeclasses and their instances Doaitse Swierstra and Atze Dijkstra with extra s Utrecht University September 29, 2016 1. The basics 2 Overloading versus parametric polymorphism 1
More informationProgramming 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
More informationCSci 450: Org. of Programming Languages Overloading and Type Classes
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.........................
More informationCSC312 Principles of Programming Languages : Functional Programming Language. Copyright 2006 The McGraw-Hill Companies, Inc.
CSC312 Principles of Programming Languages : Functional Programming Language Overview of Functional Languages They emerged in the 1960 s with Lisp Functional programming mirrors mathematical functions:
More informationLet s Talk About Logic
Let s Talk About Logic Jan van Eijck CWI & ILLC, Amsterdam Masterclass Logica, 2 Maart 2017 Abstract This lecture shows how to talk about logic in computer science. To keep things simple, we will focus
More informationCSCE 314 Programming Languages
CSCE 314 Programming Languages Haskell: Higher-order Functions Dr. Hyunyoung Lee 1 Higher-order Functions A function is called higher-order if it takes a function as an argument or returns a function as
More informationCSc 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
More informationCSc 372 Comparative Programming Languages
CSc 372 Comparative Programming Languages 8 : Haskell Function Examples Christian Collberg collberg+372@gmail.com Department of Computer Science University of Arizona Copyright c 2005 Christian Collberg
More informationCS 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 informationFunctional Programming. Overview. Topics. Recall λ-terms. Examples
Topics Functional Programming Christian Sternagel Harald Zankl Evgeny Zuenko Department of Computer Science University of Innsbruck WS 2017/2018 abstract data types, algebraic data types, binary search
More informationCS 320: Concepts of Programming Languages
CS 320: Concepts of Programming Languages Wayne Snyder Computer Science Department Boston University Lecture 06: Useful Haskell Syntax, HO Programming Continued o Goodbye to Bare Bones Haskell: Built-in
More informationHaske k ll An introduction to Functional functional programming using Haskell Purely Lazy Example: QuickSort in Java Example: QuickSort in Haskell
Haskell An introduction to functional programming using Haskell Anders Møller amoeller@cs.au.dk The most popular purely functional, lazy programming language Functional programming language : a program
More informationStandard prelude. Appendix A. A.1 Classes
Appendix A Standard prelude In this appendix we present some of the most commonly used definitions from the standard prelude. For clarity, a number of the definitions have been simplified or modified from
More informationAdvanced features of Functional Programming (Haskell)
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
More informationAn introduction introduction to functional functional programming programming using usin Haskell
An introduction to functional programming using Haskell Anders Møller amoeller@cs.au.dkau Haskell The most popular p purely functional, lazy programming g language Functional programming language : a program
More informationIntroduction to Programming, Aug-Dec 2006
Introduction to Programming, Aug-Dec 2006 Lecture 3, Friday 11 Aug 2006 Lists... We can implicitly decompose a list into its head and tail by providing a pattern with two variables to denote the two components
More informationCSCE 314 Programming Languages
CSCE 314 Programming Languages Final Review Part I Dr. Hyunyoung Lee 1 Programming Language Characteristics Different approaches to describe computations, to instruct computing devices E.g., Imperative,
More informationTesting. Wouter Swierstra and Alejandro Serrano. Advanced functional programming - Lecture 2. [Faculty of Science Information and Computing Sciences]
Testing Advanced functional programming - Lecture 2 Wouter Swierstra and Alejandro Serrano 1 Program Correctness 2 Testing and correctness When is a program correct? 3 Testing and correctness When is a
More informationHaskell Introduction Lists Other Structures Data Structures. Haskell Introduction. Mark Snyder
Outline 1 2 3 4 What is Haskell? Haskell is a functional programming language. Characteristics functional non-strict ( lazy ) pure (no side effects*) strongly statically typed available compiled and interpreted
More informationPrinciples of Programming Languages
Principles of Programming Languages h"p://www.di.unipi.it/~andrea/dida2ca/plp-16/ Prof. Andrea Corradini Department of Computer Science, Pisa Lesson 24! Type inference in ML / Haskell 1 Type Checking vs
More informationHaskell An Introduction
Haskell An Introduction What is Haskell? General purpose Purely functional No function can have side-effects IO is done using special types Lazy Strongly typed Polymorphic types Concise and elegant A First
More informationHaskell Overview II (2A) Young Won Lim 8/9/16
(2A) 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 License, Version 1.2 or any later version published
More information9/19/12. Why Study Discrete Math? What is discrete? Sets (Rosen, Chapter 2) can be described by discrete math TOPICS
What is discrete? Sets (Rosen, Chapter 2) TOPICS Discrete math Set Definition Set Operations Tuples Consisting of distinct or unconnected elements, not continuous (calculus) Helps us in Computer Science
More informationMore fun with recursion
Informatics 1 Functional Programming Lecture 6 More fun with recursion Don Sannella University of Edinburgh Part I Counting Counting Prelude [1..3] [1,2,3] Prelude enumfromto 1 3 [1,2,3] [m..n] stands
More informationINTRODUCTION TO HASKELL
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
More informationLecture 19: Functions, Types and Data Structures in Haskell
The University of North Carolina at Chapel Hill Spring 2002 Lecture 19: Functions, Types and Data Structures in Haskell Feb 25 1 Functions Functions are the most important kind of value in functional programming
More informationCSc 372. Comparative Programming Languages. 18 : Haskell Type Classes. Department of Computer Science University of Arizona
1/20 CSc 372 Comparative Programming Languages 18 : Haskell Type Classes Department of Computer Science University of Arizona collberg@gmail.com Copyright c 2013 Christian Collberg 2/20 Type Classes Type
More informationFunctional Programming for Logicians - Lecture 1
Functional Programming for Logicians - Lecture 1 Functions, Lists, Types Malvin Gattinger 4 June 2018 module L1 where Introduction Who is who Course website: https://malv.in/2018/funcproglog/ Malvin Gattinger
More informationIntroduction to Haskell
Introduction to Haskell Matt Mullins Texas A&M Computing Society October 6, 2009 Matt Mullins (TACS) Introduction to Haskell October 6, 2009 1 / 39 Outline Introduction to Haskell Functional Programming
More informationWeek 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
More informationFUNCTIONAL PEARLS The countdown problem
To appear in the Journal of Functional Programming 1 FUNCTIONAL PEARLS The countdown problem GRAHAM HUTTON School of Computer Science and IT University of Nottingham, Nottingham, UK www.cs.nott.ac.uk/
More informationProgramming Languages 3. Definition and Proof by Induction
Programming Languages 3. Definition and Proof by Induction Shin-Cheng Mu Oct. 22, 2015 Total Functional Programming The next few lectures concerns inductive definitions and proofs of datatypes and programs.
More informationINTRODUCTION TO FUNCTIONAL PROGRAMMING
INTRODUCTION TO FUNCTIONAL PROGRAMMING Graham Hutton University of Nottingham adapted by Gordon Uszkay 1 What is Functional Programming? Opinions differ, and it is difficult to give a precise definition,
More informationFunctional Programming and Haskell
Functional Programming and Haskell Tim Dawborn University of Sydney, Australia School of Information Technologies Tim Dawborn Functional Programming and Haskell 1/22 What are Programming Paradigms? A programming
More informationAbstract 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
More informationCS 320 Midterm Exam. Fall 2018
Name: BU ID: CS 320 Midterm Exam Fall 2018 Write here the number of the problem you are skipping: You must complete 5 of the 6 problems on this exam for full credit. Each problem is of equal weight. Please
More informationStatic Contract Checking for Haskell
Static Contract Checking for Haskell Dana N. Xu INRIA France Work done at University of Cambridge Simon Peyton Jones Microsoft Research Cambridge Joint work with Koen Claessen Chalmers University of Technology
More informationProgramming Language Concepts, CS2104 Lecture 7
Reminder of Last Lecture Programming Language Concepts, CS2104 Lecture 7 Tupled Recursion Exceptions Types, ADT, Haskell, Components 5th Oct 2007 CS2104, Lecture 7 1 Overview 5th Oct 2007 CS2104, Lecture
More informationHaskell Overview III (3A) Young Won Lim 10/4/16
(3A) 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 License, Version 1.2 or any later version published
More informationHaskell: From Basic to Advanced. Part 2 Type Classes, Laziness, IO, Modules
Haskell: From Basic to Advanced Part 2 Type Classes, Laziness, IO, Modules Qualified types In the types schemes we have seen, the type variables were universally quantified, e.g. ++ :: [a] -> [a] -> [a]
More informationReasoning 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
More informationInformatics 1 Functional Programming Lectures 15 and 16. IO and Monads. Don Sannella University of Edinburgh
Informatics 1 Functional Programming Lectures 15 and 16 IO and Monads Don Sannella University of Edinburgh Part I The Mind-Body Problem The Mind-Body Problem Part II Commands Print a character putchar
More informationCIS552: Advanced Programming
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
More informationFaith, Evolution, and Programming Languages. Philip Wadler University of Edinburgh
Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh Evolution Multiculturalism Part I Church: The origins of faith Gerhard Gentzen (1909 1945) Gerhard Gentzen (1935) Natural
More informationCS 11 Haskell track: lecture 1
CS 11 Haskell track: lecture 1 This week: Introduction/motivation/pep talk Basics of Haskell Prerequisite Knowledge of basic functional programming e.g. Scheme, Ocaml, Erlang CS 1, CS 4 "permission of
More informationLogic - CM0845 Introduction to Haskell
Logic - CM0845 Introduction to Haskell Diego Alejandro Montoya-Zapata EAFIT University Semester 2016-1 Diego Alejandro Montoya-Zapata (EAFIT University) Logic - CM0845 Introduction to Haskell Semester
More informationFoundations of Computation
The Australian National University Semester 2, 2018 Research School of Computer Science Tutorial 5 Dirk Pattinson Foundations of Computation The tutorial contains a number of exercises designed for the
More informationEDAF40. 2nd June :00-19:00. WRITE ONLY ON ONE SIDE OF THE PAPER - the exams will be scanned in and only the front/ odd pages will be read.
EDAF40 2nd June 2017 14:00-19:00 WRITE ONLY ON ONE SIDE OF THE PAPER - the exams will be scanned in and only the front/ odd pages will be read. DO NOT WRITE WITH OTHER COLOUR THAN BLACK - coloured text
More informationA general introduction to Functional Programming using Haskell
A general introduction to Functional Programming using Haskell Matteo Rossi Dipartimento di Elettronica e Informazione Politecnico di Milano rossi@elet.polimi.it 1 Functional programming in a nutshell
More informationOverloading, Type Classes, and Algebraic Datatypes
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
More informationHigher Order Functions in Haskell
Higher Order Functions in Haskell Evan Misshula 2018-09-10 Outline Curried Functions Curried comparison Example partial application partial application of a string function Returned functions ZipWith flip
More informationInformatics 1 Functional Programming Lecture 4. Lists and Recursion. Don Sannella University of Edinburgh
Informatics 1 Functional Programming Lecture 4 Lists and Recursion Don Sannella University of Edinburgh Part I Lists and Recursion Cons and append Cons takes an element and a list. Append takes two lists.
More informationHaskell Refresher Informatics 2D
Haskell Purely functional! : Everything is a function Haskell Refresher Informatics 2D Kobby. K.A. Nuamah 30 January 2015 Main topics: Recursion Currying Higher-order functions List processing functions
More informationBackground Operators (1E) Young Won Lim 7/7/18
Background Operators (1E) Copyright (c) 2016-2018 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2
More informationFunctional Programming Languages (FPL)
Functional Programming Languages (FPL) 1. Definitions... 2 2. Applications... 2 3. Examples... 3 4. FPL Characteristics:... 3 5. Lambda calculus (LC)... 4 6. Functions in FPLs... 7 7. Modern functional
More informationHaskell Overview II (2A) Young Won Lim 8/23/16
(2A) 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 License, Version 1.2 or any later version published
More informationn n Try tutorial on front page to get started! n spring13/ n Stack Overflow!
Announcements n Rainbow grades: HW1-6, Quiz1-5, Exam1 n Still grading: HW7, Quiz6, Exam2 Intro to Haskell n HW8 due today n HW9, Haskell, out tonight, due Nov. 16 th n Individual assignment n Start early!
More informationLecture 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
More informationCS 340 Spring 2019 Midterm Exam
CS 340 Spring 2019 Midterm Exam Instructions: This exam is closed-book, closed-notes. Electronic devices of any kind are not permitted. Write your final answers, tidily, in the boxes provided. Scratch
More information(ii) Define a function ulh that takes a list xs, and pairs each element with all other elements in xs.
EXAM FUNCTIONAL PROGRAMMING Tuesday the 1st of October 2016, 08.30 h. - 10.30 h. Name: Student number: Before you begin: Do not forget to write down your name and student number above. If necessary, explain
More informationFunctional Programming Mid-term exam Tuesday 3/10/2017
Functional Programming Mid-term exam Tuesday 3/10/2017 Name: Student number: Before you begin: Do not forget to write down your name and student number above. If necessary, explain your answers in English.
More informationFunctional Logic Programming Language Curry
Functional Logic Programming Language Curry Xiang Yin Department of Computer Science McMaster University November 9, 2010 Outline Functional Logic Programming Language 1 Functional Logic Programming Language
More informationVDM. Development Method.
3BA31 Formal Methods 1 VDM VDM stands for the Vienna Development Method Result of work the in the Vienna Research Laboratory of IBM (1960s). VDM is now a standardised formal-method (VDM-SL Specification
More informationHaskell through HUGS THE BASICS
Haskell through HUGS THE BASICS FP for DB Basic HUGS 1 Algorithmic Imperative Languages variables assignment if condition then action1 else action2 loop block while condition do action repeat action until
More informationFunctional Programming
Functional Programming Monadic Prelude Jevgeni Kabanov Department of Computer Science University of Tartu Introduction Previously on Functional Programming Monadic laws Monad class (>>= and return) MonadPlus
More informationCSE341 Spring 2017, Midterm Examination April 28, 2017
CSE341 Spring 2017, Midterm Examination April 28, 2017 Please do not turn the page until 12:30. Rules: The exam is closed-book, closed-note, etc. except for one side of one 8.5x11in piece of paper. Please
More informationTentamen 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
More informationFunctional Programming TDA 452, DIT 142
Chalmers Göteborgs Universitet 2016-04-07 Examiner: David Sands dave@chalmers.se. Answering questions on the day of the exam (at approx 15.00): Gregoire Detrez (tel: 073 55 69 550) and at other times by
More informationFunctional Programming. Overview. Topics. Definition n-th Fibonacci Number. Graph
Topics Functional Programming Christian Sternagel Harald Zankl Evgeny Zuenko Department of Computer Science University of Innsbruck WS 2017/2018 abstract data types, algebraic data types, binary search
More informationRedefinition of an identifier is OK, but this is redefinition not assignment; Thus
Redefinition of an identifier is OK, but this is redefinition not assignment; Thus val x = 100; val x = (x=100); is fine; there is no type error even though the first x is an integer and then it is a boolean.
More informationProcessadors 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
More informationA 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
More informationHaskell: Lists. CS F331 Programming Languages CSCE A331 Programming Language Concepts Lecture Slides Friday, February 24, Glenn G.
Haskell: Lists CS F331 Programming Languages CSCE A331 Programming Language Concepts Lecture Slides Friday, February 24, 2017 Glenn G. Chappell Department of Computer Science University of Alaska Fairbanks
More informationReview of Sets. Review. Philippe B. Laval. Current Semester. Kennesaw State University. Philippe B. Laval (KSU) Sets Current Semester 1 / 16
Review of Sets Review Philippe B. Laval Kennesaw State University Current Semester Philippe B. Laval (KSU) Sets Current Semester 1 / 16 Outline 1 Introduction 2 Definitions, Notations and Examples 3 Special
More informationReasoning About Imperative Programs. COS 441 Slides 10
Reasoning About Imperative Programs COS 441 Slides 10 The last few weeks Agenda reasoning about functional programming It s very simple and very uniform: substitution of equal expressions for equal expressions
More informationInformatics 1 Functional Programming 19 Tuesday 23 November IO and Monads. Philip Wadler University of Edinburgh
Informatics 1 Functional Programming 19 Tuesday 23 November 2010 IO and Monads Philip Wadler University of Edinburgh The 2010 Informatics 1 Competition Sponsored by Galois (galois.com) List everyone who
More information301AA - Advanced Programming [AP-2017]
301AA - Advanced Programming [AP-2017] Lecturer: Andrea Corradini andrea@di.unipi.it Tutor: Lillo GalleBa galleba@di.unipi.it Department of Computer Science, Pisa Academic Year 2017/18 AP-2017-16: Haskell,
More informationProgramming Paradigms
PP 2017/18 Unit 11 Functional Programming with Haskell 1/37 Programming Paradigms Unit 11 Functional Programming with Haskell J. Gamper Free University of Bozen-Bolzano Faculty of Computer Science IDSE
More informationCOP4020 Programming Languages. Functional Programming Prof. Robert van Engelen
COP4020 Programming Languages Functional Programming Prof. Robert van Engelen Overview What is functional programming? Historical origins of functional programming Functional programming today Concepts
More informationAn introduction to functional programming. July 23, 2010
An introduction to functional programming July 23, 2010 About Outline About About What is functional programming? What is? Why functional programming? Why? is novel. is powerful. is fun. About A brief
More information