COSC 4P41 Functional Programming - PowerPoint PPT Presentation

About This Presentation
Title:

COSC 4P41 Functional Programming

Description:

Course Description (Brock Calendar): Introduction to functional programming ... Haskell, The Craft of Functional Programming, 2nd edition, S. Thompson, Addison ... – PowerPoint PPT presentation

Number of Views:86
Avg rating:3.0/5.0
Slides: 20
Provided by: michael742
Category:

less

Transcript and Presenter's Notes

Title: COSC 4P41 Functional Programming


1
COSC 4P41Functional Programming
  • Instructor Michael Winter
  • Office J323
  • Office Hours Tue Wed 1000am - 1200pm
  • email mwinter_at_brocku.ca
  • Webpage http//www.cosc.brocku.ca/Offerings/4P4
    1
  • 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 None
  • Haskell http//www.haskell.org
  • course procedures
  • plagiarism

2
Textbooks
  • Main Text
  • Haskell, The Craft of Functional Programming, 
    2nd edition, S. Thompson, Addison - Wesley
    (1999), ISBN 0-201-34275-8
  • Supplemental Texts
  • The Hugs 98 User Manual, Mark P Jones, Alastair
    Reid, online documentation.
  • Real World Haskell, Bryan O'Sullivan, John
    Goerzen, Don Steward, O'Reilly (2009), ISBN
    978-0-596-51498-3
  • The Haskell School of Expression, P. Hudak,
    Cambridge University Press (2000), ISBN
    0-521-64408-9

3
Course Work
  • Marking Scheme
  • Programming Assignments (2x10,2x20) 60
  • Final Exam (oral) 40
  • Programming Assignments
    Number Due Late
  • 1 Sep 28 _at_ 100pm Sep 30 _at_ 100pm
  • 2 Oct 19 _at_ 100pm Oct 21 _at_ 100pm
  • 3 Nov 09 _at_ 100pm Nov 11 _at_ 100pm
  • 4 Nov 30 _at_ 100pm Dec 02 _at_ 100pm
  • Registration for final exam   Mid of October
    (Office hours or after class)
  • Final Exam (oral, 30min each)   Monday, December
    07, 2009

4
  • Assignments will be available online. Submission
    is electronically. Details see webpage.
    Assignments will be returned by email.
  • Assignments are due at the times specified above
    and will be accepted late until the indicated
    time, subject to a penalty of 25. After the late
    period, assignments will not be accepted.
  • A mark of at least 40 on the final exam is
    required to achieve a passing grade in this
    course.
  • Assignments will be carefully examined regarding
    plagiarism. Cases of suspected plagiarism will be
    dealt with according to the University
    regulations and Departmental procedures.
  • Consideration regarding illness for assignment
    submission or test dates will only be considered
    if accompanied with the completed Departmental
    Medical Excuse form.

5
Course Outline
Week Date Book/Chapt. Topics
1 Sep 14/16 1 13 Introduction to Functional Programming
2 Sep 21/23 1 45 Recursion and Data Types
3 Sep 28/30 1 67 Lists
4 Oct 05/07 1  9-10 Patterns of Computation, Functions as Values
5 Oct 14/19 1 12-13 Overloading, Type Classes, Type Checking
6 Oct 21/26 1 14-15 Algebraic Types
7 Oct 28/Nov 02 1 16 Abstract Data Types
8 Nov 04/09 1 17 Lazy Evaluation
9 Nov 11/16 1 18 Programming with Actions
10 Nov 18/23 1 8, 14.7 17.9 Reasoning about Programs
11 Nov 25/30 1 8, 14.7 17.9 Reasoning about Programs II
12 Dec 02/03 2 7 Hugs Language extensions, Review
October 12 is Thanksgiving, no classes. Make up
on December 03.
6
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

7
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

8
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

9
What is a function?
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.
A functional program is basically a list of
definitions of functions.
10
Definitions
  • Haskell definitions are of the form
  • name type
  • name expression
  • Examples
  • size Int
  • size (1213)4
  • square Int -gt Int
  • square n nn

11
  • -
  • 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 1213

12

  • 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.
  • gt size Int
  • gt size 1213

13
The Booleans
  • type Bool
  • operations
  • exOr Bool -gt Bool -gt Bool
  • exOr x y (x y) not (x y)

and
or
not not
14
The integers
  • type Int range 21474836482147483647
  • type Integer range unbounded
  • operations

sum
product
raise to the power
- difference
div whole number division
mod remainder
abs absolute value
negate change sign
15
Relational operators and overloading
  • () for integers and Booleans. This means that
    () will have the type
  • Int -gt Int -gt Bool
  • Bool -gt Bool -gt Bool
  • Indeed t -gt t -gt Bool if the type t carries an
    equality.
  • () Eq a gt a -gt a -gt Bool

gt greater than
gt greater than or equal to
equal to
/ not equal to
lt less than or equal to
lt less than
16
The rational numbers
  • type Rational (import Ratio)
  • operations
  • and , , -, negate, abs

Integer -gt Integer -gt Rational
numerator the numerator
denominator the denominator
fromInteger Integer -gt Rational
17
The characters
  • type Char
  • a
  • \t tab
  • \n newline
  • \\ backslash
  • \ single quote
  • \ double quote
  • \97 character with ASCII code 97, i.e., 9

18
Layout
  • mystery x xx
  • x
  • 2
  • next x
  • fun v1 v2 vn
  • g1 e1
  • g2 e2
  • otherwise er

19
Operators and Do-it-yourself operators
  • () Int -gt Int -gt Int
  • () 2 3 2 3
  • 2 max 3 max 2 3
  • Operator symbols !,,,,,,,.,/,lt,,gt,?,\,,
    ,,-,
  • () Int -gt Int -gt Int
  • x y
  • x gt y y
  • otherwise x
Write a Comment
User Comments (0)
About PowerShow.com