wiąże w prawo, więc a->a->a jest równoznaczne z a->(a->a)"> wiąże w prawo, więc a->a->a jest równoznaczne z a->(a->a)">

Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Funkcje wyższego rzędu

Podobne prezentacje


Prezentacja na temat: "Funkcje wyższego rzędu"— Zapis prezentacji:

1 Funkcje wyższego rzędu

2 Currying "Currying" to metoda aby funkcja przyjmująca jeden argument mogła przyjąć wiele argumentów. Currying jest możliwy dzięki temu, że użycie funkcji wiąże w lewo, więc f x y jest równoznaczne z (f x) y operator -> wiąże w prawo, więc a->a->a jest równoznaczne z a->(a->a)

3 Przykład: add :: Integer -> Integer -> Integer add a b = a + b add :: Integer -> (Integer -> Integer) add a b = a + b Użycie funkcji: add a b Co jest równoznaczne z: (add a) b

4 Funkcja map Funkcja map przyjmuje jako parametry funkcję add oraz listę. Działanie jej polega na wykonaniu funkcji add na wszystkich elementach listy. Można tak zastąpić prostą pętlę iteracyjną która co „okrążenie” wykonuje funkcję na danym elemencie.

5 Przykład: map' :: (a->b)->[a]->[b] map' f [] = [] map' f (x:xs)= f x : map f xs Użycie: Map’ (*2) [1,2,3,4]

6 Lambda Funkcje Lambda to funkcje anonimowe wykorzystywane głównie raz np. do przekazania jej w parametrze innej funkcji. Aby tego dokonać piszemy „\” listę parametrów oddzielonych spacjami, następnie „->” i ciało funkcji (najlepiej w nawiasie)

7 Przykład 1: add = \x y -> x+y Użycie: add x y

8 Przykład 1: f_lambda = \x -> (x * x) f x = x * x Użycie: f x

9 Moduły

10 Moduł – zestaw powiązanych funkcji, typów, typeclass
Moduł – zestaw powiązanych funkcji, typów, typeclass. Program w Haskellu często jest modułem, który ładuje inne moduły a następnie wykorzystuje zdefiniowane w nich funkcje w celu realizacji postawionego zadania. Haskell dostarcza w postaci modułów bibliotekę funkcji pozwalających np. na: operacje na liczbac zespolonych, operacje na listach, programowanie współbieżne itp.

11 Moduły w Haskellu importuje się przy pomocy:
import nazwa modułu Z danego modułu można też importować poszczególne funkcje np: import Data . List ( nub , sort )

12 data.list - operacje na listach
Przykładowe funkcje: transpose – transpozycja listy list import Data.List Użycie: transpose ["Ala","ma","kota"] Odpowiedź: ["amk","lao","at","a"]

13 concat – zamiany listy list na listę
import Data.List Użycie: concat ["Ala","ma","kota"] Odpowiedź: "Alamakota"

14 sort - sortuje listę elementów
import Data.List (sort) Użycie: sort [1,4,7,9,2,5,3,8] Odpowiedź: [1,2,3,4,5,6,7,8,9]

15 nub - usuwa z listy duplikaty elementów listy
import Data.List (nub) Użycie: nub "Ala ma kota a kot ma Ale„ Odpowiedź: "Ala mkote"

16 words - dzieli linię tekstu na słowa i tworzy linię tekstu z tych słów
import Data.List Użycie: words "Witaj swiecie„ Odpowiedź: ["Witaj","swiecie"]

17 data.char Moduł Data.Char zawiera funkcje do operowania na pojedynczych znakach: map digitToInt – zamienia znak na typ Int import Data.Char Użycie: map digitToInt "FF85AB„ Odpowiedź: [15,15,8,5,10,11]

18 intToDigit – jest funkcją odwrotną do digitToInt
import Data.Char Użycie: intToDigit 15 Odpowiedź: 'f'


Pobierz ppt "Funkcje wyższego rzędu"

Podobne prezentacje


Reklamy Google