صفحه 1:
Polymorphism and Overloading Lecture 10 Polymorphism, Overloading ae ae

صفحه 2:
-relude> [1,2,3] ++ [4,5,6] [1,2,3,4,5,6] :: [Integer] Prelude> [‘a','b','c']++I['d','e','f] "abcdef" :: [Char] Prelude> "abc"++"def" "abcdef" :: [Char] Prelude> ["abc","def","ghi"]++["uvw","xyz"] ["abc","def","ghi","uvw","xyz"] :: [[Char]] What is the type of ++: [a] -> [a] -> [a] Lecture 10 Polymorphism, Hi

صفحه 3:
lengthList [ ] = 0 lengthList (x:xs) = 1 + lengthList xs Main> lengthList ['a','b','c'] 3 :: Main> lengthList [1,2,3,4,5,6] 6 :: Integer Main> lengthList [['a','b','c'L['d''e!,'f 1, ['g' L('h7']] 4 :: Integer Main> lengthList ["abc","def"] 2 :: What is the type of lengthList? [a] -> Int Lecture 10 Polymorphism, Overloading figher Dane its ‏هر‎

صفحه 4:
olymorphism: “has many shapes”. A function is polymorphic if it can operate on many different types. In polymorphism, the same function definition is used for all the types it 9 type variables are used, as in: is ap to. [a] -> [a] -> [a] [a] -> Int (a,b) -> [a] The variable a stands for an arbitrary type. Of course all the a’s in the first declaration above stand for the same type wheras in the Lecture 10 Polymorphism, 4 loading and Higher ۹ ‏ای اس ام هه ی‎

صفحه 5:
Overloading is another mechanism for using the same function name on different types. overloaded function has different definitions for different t ‏م‎ (a,b) = = (c,d) would require different definitions of “= =". (a:='= C) Sb(D— — 0) Lecture 10 Polymorphism, 5 Overloading and Higher ‎kn‏ سد ردن

صفحه 6:
Higher Order Functions Lecture 10 Polymorphism, Overloading ae ee

صفحه 7:
her order function takes a function as an argument or retul ion as a result. When we apply a function to all elements of a list, we say that we have mapped that function into the list. There is a Haskell built-in function called map that is used for this purpose. map f list =[f x|x <- list] map f []=[] 20 (first-rest) =f first: map f rest [6,24,120] Lecture 10 Polymorphism, 5 Overloading and Higher TRS A Ses Lele) eae ‏سد ردن‎ kn

صفحه 8:
Type of map: input function input list output list map ::(a->b) -> [a], [b] \ Elements of the list to \ which the function is Elements of applied the output list that the function returns Lecture 10 Polymorphism, dH

صفحه 9:
A function which doubles all the values in a list of integers: double :: Int -> Int double n = n*2 doubleAll :: [Int] -> [Int] doubleAll []=[] doubleAll (first:rest) = (double first) : CLOUD 1G ATL 1 SG Jiao ec ‏که‎ a SU IA IIE A function that squares all the values in a list of integers: square :: Int -> Int square n=n“2 squareAll :: [Int] -> [Int] squareAll []=[] squareAll (first : rest) = (square first) : (squareAll rest) PEE

صفحه 10:
A function that returns a list of factorials of all the numbers in a given list of integers: fact :: Int -> Int fact n = product [1..n] factAll :: [Int] -> [Int] factAll[]=[] factAll (first : rest) = (fact first) : (factAll rest) There is a pattern that is repeated in all these definitions. Here is where we can use a higher order function. We may write a general function: doAll :: (Int -> Int) -> [Int] -> [Int] doAll f []=[] doAll f (first : rest) = (f first ) : (doAll f rest) All we need is this one general definition and the definitions of each of the functions to be applied to 5 Lecture 10 Polymorphism, each element. Overloading ‎ths‏ ا ‎ ‎ ‎ ‎ ‎

صفحه 11:
double :: Int -> Int double n = n*2 square :: Int -> Int square n=n“2 fact :: Int -> Int fact n = product [1..n] doAll :: (Int -> Int) -> [Int] -> [Int] doAll f []=[] doAll f (first : rest) = (f first ) : (doAll f rest) 11

صفحه 12:
Alternatively, we could define all the functions in one line each using our higher order function doAll: doubleAll2 :: [Int] -> [Int ] doubleAll2 list = doAll double list squareAll2 :: [Int] -> [Int ] squareAll2 list = doAll square list factAll2 :: [Int] -> [Int ] factAll2 list = doAll fact list Lecture 10 Polymorphism, 12 Overloading figher ‏نز رین‎

صفحه 13:
We could even have used the built-in function map: doubleAll = map double} Main> doAll double [1,2,3,4] where double x = 2)[2,4,6,8] Main> map double [1,2,3,4] [2,4,6,8] Main> doAll fact [1,2,3,4] [1,2,6,24] Main> map fact [1,2,3,4] [1,2,6,24] Main> doAll square [1,2,3,4] [1,4,9,16] :: [Int] Main> map square [1,2,3,4] Lecture 104[1,4,9,16] Overloadin| eA ee as Ade

صفحه 14:
We can think of map as a function which takes a function of type ۱ ‏ار ی‎ Unt] -» Lind ht associative So, we can define the following functions which return a doubleAll3 :: [Int] -> [Int ] squareAll3 :: [Int] -> [Int] factAll3 - = = map fact Lecture 10 Polymorphism, 14 Overloading ‏ا‎ ths

صفحه 15:
Filtering Function remove (removes an element from a list): remove []=[] remove element (first : rest) = if element = = first then remove element rest else first : (remove element rest) ‘We may want to wr} a function that rem| all even or odd ele removeOdd (first:rest) = if odd first then removeOdd or elements that safj a certain condition, else first :

صفحه 16:
Main> removeEven [1,2,3,4,5,6] OVveEven [ ]=[ ] removeEven (first : rest)= if even first then removeEven rest e can write a generaléunction that does all of these. removeAll p []=[] removeAll p (first: rest) = if p first then removeAll p 25 16 else first:

صفحه 17:
Main> removeAll odd [1,2,3,4,5,6] [2,4,6] Main> removeAll even <عضع]ژ2ع_سط_ )11,2,3,4,5,6 [1,3,5] We could have used filter to do all this rather than defining removeAll. This is another useful built-in function. It takes a property and a list and returns a list ts that have that property. [2,4,6] Lecture 10 Polymorphism, 17 Overloading andi eho

صفحه 18:
output list a-> Bool) -> [a] - Elements of the input list, the output list that the function returns and the type that the property works input list Type of filter: input function filter :: > fal | The property is a function that returns a Bool Lecture 10 Polym8:Bhism, 18

صفحه 19:
Definition of filter Fortunately, filter is a built-in function. If it wasn’t a built-in function, we could have defined filter as follows. filter :: (Int -> Bool) -> [Int] -> [Int] filter p []= [] filter p (first : rest) = if (p first) then first : (filter p rest) else filter p rest An Example: IcaseLetters ‏و‎ = map toLower (filter isAlpha s) Lecture 10 Polymorphism, 19 Overloading ‏ا‎ ths

جهت مطالعه ادامه متن، فایل را دریافت نمایید.
34,000 تومان