© M. Winter COSC 4P41 – Functional Programming 1.11.1 COSC 4P41 Functional Programming Instructor: Michael Winter –Office J323 –Office Hours: Wed & Fri.

Slides:



Advertisements
Similar presentations
Copyright © 2006 The McGraw-Hill Companies, Inc. Programming Languages 2nd edition Tucker and Noonan Chapter 14 Functional Programming It is better to.
Advertisements

SYMBOL TABLES &CODE GENERATION FOR EXECUTABLES. SYMBOL TABLES Compilers that produce an executable (or the representation of an executable in object module.
1 Copyright © 1998 by Addison Wesley Longman, Inc. Chapter 14 Functional Programming Languages - The design of the imperative languages is based directly.
1 Scheme and Functional Programming Aaron Bloomfield CS 415 Fall 2005.
Introduction to Programming Languages Nai-Wei Lin Department of Computer Science and Information Engineering National Chung Cheng University.
Chapter 3 Functional Programming. Outline Introduction to functional programming Scheme: an untyped functional programming language.
CS 355 – PROGRAMMING LANGUAGES Dr. X. Apply-to-all A functional form that takes a single function as a parameter and yields a list of values obtained.
Lecture 2 Introduction to C Programming
Introduction to C Programming
Introduction to Computer Programming in C
1 Functional programming Languages And a brief introduction to Lisp and Scheme.
© M. Winter COSC 4P42 – Formal Methods in Software Engineering COSC 4P42 Formal Methods in Software Engineering Course: –Lecture: Wed & Fri, 11:00am.
Functional Design and Programming Lecture 1: Functional modeling, design and programming.
Dr. Muhammed Al-Mulhem 1ICS ICS 535 Design and Implementation of Programming Languages Syllabus (101)
Copyright © 2006 The McGraw-Hill Companies, Inc. Programming Languages 2nd edition Tucker and Noonan Chapter 14 Functional Programming It is better to.
ISBN Chapter 15 Functional Programming Languages Mathematical Functions Fundamentals of Functional Programming Languages Introduction to.
CS1061 C Programming Lecture 5: Building Blocks of Simple Programs A. O’Riordan, 2004.
Programming Languages Structure
CSC321: Programming Languages14-1 Programming Languages Tucker and Noonan Chapter 14: Functional Programming 14.1 Functions and the Lambda Calculus 14.2.
Data types and variables
ISBN Chapter 15 Functional Programming Languages.
Chapter 2 Data Types, Declarations, and Displays
ISBN Chapter 15 Functional Programming Languages.
Principles of Procedural Programming
Final Exam Review Instructor : Yuan Long CSC2010 Introduction to Computer Science Apr. 23, 2013.
Section 1.1 Numbers and Their Properties.
Objectives You should be able to describe: Data Types
Introduction to Programming Prof. Rommel Anthony Palomino Department of Computer Science and Information Technology Spring 2011.
1 CSCE Programming Languages Introduction and Course Administration Dr. Hyunyoung Lee 410B HR Bright
1 Chapter 5: Names, Bindings and Scopes Lionel Williams Jr. and Victoria Yan CSci 210, Advanced Software Paradigms September 26, 2010.
COE Computer Organization & Assembly Language Talal Alkharobi.
Imperative Programming
CH Programming An introduction to programming concepts.
CIS Computer Programming Logic
Data Structures and Programming.  Today:  Administrivia  Introduction to 225, Stacks  Course website: 
Advanced Functional Programming Tim Sheard 1 Lecture 1 Advanced Functional Programming Tim Sheard Oregon Graduate Institute of Science & Technology.
© The McGraw-Hill Companies, 2006 Chapter 4 Implementing methods.
ISBN Chapter 15 Functional Programming Languages.
ICS 102 Computer Programming University of Hail College of Computer Science & Engineering Computer Science and Software Engineering Department.
Haskell. 2 GHC and HUGS Haskell 98 is the current version of Haskell GHC (Glasgow Haskell Compiler, version 7.4.1) is the version of Haskell I am using.
Introduction to Programming David Goldschmidt, Ph.D. Computer Science The College of Saint Rose Java Fundamentals (Comments, Variables, etc.)
CS 23021–600 Computer Science I Dr. Angela Guercio Spring 2010.
Summary of what we learned yesterday Basics of C++ Format of a program Syntax of literals, keywords, symbols, variables Simple data types and arithmetic.
1 WELCOME TO COMPUTER SCIENCE 1027b COMPUTER SCIENCE FUNDAMENTALS II Lecturers: Eric Schost (001) John Barron (002)
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Chapter 2 Chapter 2 - Introduction to C Programming.
Introduction to C Programming Angela Chih-Wei Tang ( 唐 之 瑋 ) Department of Communication Engineering National Central University JhongLi, Taiwan 2010 Fall.
ICS102: Introduction To Computing King Fahd University of Petroleum & Minerals College of Computer Science & Engineering Information & Computer Science.
Property of Jack Wilson, Cerritos College1 CIS Computer Programming Logic Programming Concepts Overview prepared by Jack Wilson Cerritos College.
© M. Winter COSC 4P41 – Functional Programming COSC 4P41 Functional Programming Instructor: Michael Winter –Office J323 –Office Hours: Tue & Wed.
CMP 131 Introduction to Computer Programming Violetta Cavalli-Sforza Week 5, Lecture 1 (Monday)
ISBN Chapter 15 Functional Programming Languages.
ISBN Chapter 15 Functional Programming Languages.
TIVDM2Functional Programming Language Concepts 1 Concepts from Functional Programming Languages Peter Gorm Larsen.
1 FP Foundations, Scheme In Text: Chapter Chapter 14: FP Foundations, Scheme Mathematical Functions Def: A mathematical function is a mapping of.
Functional Programming. Some Functional Languages Lisp Scheme - a dialect of Lisp Haskell Miranda.
Haskell Introduction CSCE 314 Spring CSCE 314 – Programming Studio Historical Background 1930s: Alonzo Church develops the lambda calculus, a simple.
1 Lecture 2 - Introduction to C Programming Outline 2.1Introduction 2.2A Simple C Program: Printing a Line of Text 2.3Another Simple C Program: Adding.
Functional Programming Lecture 1 - Introduction Professor Muffy Calder.
CS314 – Section 5 Recitation 9
INC 161 , CPE 100 Computer Programming
Functional Programming
Functional Programming Languages
COSC 5V90 Functional Programming and Interactive Theorem Proving
Types CSCE 314 Spring 2016.
Information Science and Engineering
Haskell.
COSC 4P41 Functional Programming
Functional Programming Languages
EECE.2160 ECE Application Programming
EECE.2160 ECE Application Programming
Presentation transcript:

© M. Winter COSC 4P41 – Functional Programming COSC 4P41 Functional Programming Instructor: Michael Winter –Office J323 –Office Hours: Wed & Fri 1:00pm – 3:00pm – Webpage: Course Description (Brock Calendar): Introduction to functional programming using the languages Haskell. Topics include all data types, type inference, pattern-matching, recursion, polymorphism, higher-order functions, lazy vs eager evaluation, modules and monads. Prerequisites: three and one-half COSC credits or permission of the instructor. Haskell:

© M. Winter COSC 4P41 – Functional Programming Textbooks Main Text – Haskell, The Craft of Functional Programming, 3 rd edition, S. Thompson, Addison - Wesley (2011), ISBN Supplemental Texts – The Haskell 2010 Report, Simon Marlow, online. – Real World Haskell, Bryan O'Sullivan, John Goerzen, Don Steward, O'Reilly (2009), ISBN – The Haskell School of Expression, P. Hudak, Cambridge University Press (2000), ISBN

© M. Winter COSC 4P41 – Functional Programming Course Work Marking Scheme –Lab Tests (3x20%)60% –Final Lab Exam 40% Tests & Exam (D205) Lab Test 1January 3:30pm – 5:00pm Lab Test 2February 3:30pm – 5:00pm Lab Test 3March 3:30pm-5:00pm ExamApril tba

© M. Winter COSC 4P41 – Functional Programming A mark of at least 40% on the final exam is required to achieve a passing grade in this course. Consideration regarding illness for test dates will only be considered if accompanied with the completed Departmental Medical Excuse form. Academic misconduct is a serious offence. The principle of academic integrity, particularly of doing one's own work, documenting properly (including use of quotation marks, appropriate paraphrasing and referencing/citation), collaborating appropriately, and avoiding misrepresentation, is a core principle in university study. Students should consult Section VII, 'Academic Misconduct", in the "Academic Regulations and University Polices“ entry in the Undergraduate Calendar, available at brocku.ca/webcal to view a fuller description of prohibited actions, and the procedures and penalties.

© M. Winter COSC 4P41 – Functional Programming Course Outline WeekDateBook/Chapt.Topics 1Jan 08/10[1] 1–3Introduction to Functional Programming 2Jan 15/17[1] 4–5Recursion and Data Types 3Jan 22/24[1] 6–7Lists 4Jan 29/31[1] 9-10Patterns of Computation, Functions as Values 5Feb 05/07[1] 12-13Overloading, Type Classes, Type Checking 6Feb 12/14[1] 14-15Algebraic Types 7Feb 26/28*[1] 16Abstract Data Types 8Mar 05/07[1] 17Lazy Evaluation 9Mar 12/14[1] 18Programming with Actions 10Mar 19/21[1] 8, 14.7 & 17.9Reasoning about Programs 11Mar 26/28[1] 8, 14.7 & 17.9Reasoning about Programs II 12Apr 02/04[2] 7Language extensions, Review * Feb is Reading Week.

© M. Winter COSC 4P41 – Functional Programming Imperative languages Von Neumann model: –store with addressable locations machine code: –effect achieved by changing contents of store locations –instructions executed in sequence, flow of control altered by jumps imperative language: –variable corresponds to store location –instructions executed in sequence, flow of control altered by conditional and loop statements –efficient implementation since close to design of conventional computers

© M. Winter COSC 4P41 – Functional Programming Functional languages computational model: lambda calculus mathematical functions: domain, range functional languages achieve effect by applying functions functional vs. imperative languages –store location –assignment statement vs. application of a function (expressions) side-effects aliasing referential transparency

© M. Winter COSC 4P41 – Functional Programming Features of functional languages usually strongly typed (modern languages) algebraic type definitions –mathematical based notation –no (implicit) pointers higher-order functions –can accept functions as parameters –can return functions as results recursion as a basic principle application of rewrite rule: –function call replaced by code body run-time overhead  garbage collection slogan: define “what to do”, not “how to do”

© M. Winter COSC 4P41 – Functional Programming What is a function? inputs output A functional program is basically a list of definitions of functions. + Int A function is something which produces an output value depending on the input value(s). A type is a collection of values. Usually functions are considered to take values of specific types as input, and produce values of another type.

© M. Winter COSC 4P41 – Functional Programming Definitions Haskell definitions are of the form: name :: type name = expression Examples: size :: Int size = (12+13)*4 square :: Int -> Int square n = n*n

© M. Winter COSC 4P41 – Functional Programming {-######################################################### FirstScript.hs Simon Thompson, June 1998 The purpose of this script is - to illustrate some simple definitions over integers (Int); - to give a first example of a script. #########################################################-} -- The value size is an integer (Int), defined to be -- the sum of twelve and thirteen. size :: Int size = The function to square an integer. square :: Int -> Int square n = n*n -- The function to double an integer. double :: Int -> Int double n = 2*n -- An example using double, square and size. example :: Int example = double (size - square (2+2))

© M. Winter COSC 4P41 – Functional Programming ########################################################### FirstLiterate.lhs Simon Thompson, June 1998 The purpose of this script is - to illustrate some simple definitions over integers (Int); - to give a first example of a literate script. ########################################################### The value size is an integer (Int), defined to be the sum of twelve and thirteen. > size :: Int > size = The function to square an integer. >square :: Int -> Int >square n = n*n The function to double an integer. >double :: Int -> Int >double n = 2*n An example using double, square and size. >example :: Int > example = double (size - square (2+2))

© M. Winter COSC 4P41 – Functional Programming The Booleans type Bool operations exOr :: Bool -> Bool -> Bool exOr x y = (x || y) && not (x && y) && and || or not

© M. Winter COSC 4P41 – Functional Programming The integers type Int : range – … type Integer : range unbounded operations + sum * product ^ raise to the power - difference div whole number division mod remainder abs absolute value negate change sign

© M. Winter COSC 4P41 – Functional Programming Relational operators and overloading (==) for integers and Booleans. This means that (==) will have the type Int -> Int -> Bool Bool -> Bool -> Bool Indeed t -> t -> Bool if the type t carries an equality. (==) :: Eq a => a -> a -> Bool > greater than >= greater than or equal to == equal to /= not equal to <= less than or equal to < less than

© M. Winter COSC 4P41 – Functional Programming The rational numbers type Rational (import Ratio) operations and +, *, -, negate, abs %Integer -> Integer -> Rational numerator the numerator denominator the denominator fromIntegerInteger -> Rational

© M. Winter COSC 4P41 – Functional Programming The characters type Char ‘a’ ‘\t’ tab ‘\n’ newline ‘\\’ backslash ‘\’’ single quote ‘\”’ double quote ‘\97’ character with ASCII code 97, i.e., ‘9’

© M. Winter COSC 4P41 – Functional Programming Layout mystery x = x*x +x +2 next x = … fun v1 v2 … vn | g1 = e1 | g2 = e2 … | otherwise = e r

© M. Winter COSC 4P41 – Functional Programming Operators and Do-it-yourself operators (+) :: Int -> Int -> Int (+) 2 3 = `max` 3 = max 2 3 Operator symbols !,#,$,%,&,*,+,.,/,,?,\,^,|,:,-,~ (&&&) :: Int -> Int -> Int x &&& y | x > y = y | otherwise = x