Funkcje wyższego rzędu

Slides:



Advertisements
Podobne prezentacje
Algorytmy sortowania i przeszukiwania
Advertisements

C++ wykład 9 ( ) Szablony.
Język C/C++ Funkcje.
Programowanie obiektowe
C++ wykład 13,14,15 (16/23/ ) STL.
Mgr inż.Marcin Borkowski Podstawy Java Krótkie wprowadzenie dla studentów Wyższej Szkoły Ekologii i Zarządzania
Programowanie obiektowe
Programowanie obiektowe PO PO - LAB 4 Wojciech Pieprzyca.
Technologie prezentacji medialnych, © 2006 Igor Garnik
Jarosław Kuchta Dokumentacja i Jakość Oprogramowania
Język ANSI C Funkcje Wykład: Programowanie komputerów
Programowanie I Rekurencja.
PROGRAMOWANIE STRUKTURALNE
Elementarne struktury danych Piotr Prokopowicz
Sortowanie Zajęcia 13.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
Podstawy informatyki Wirtotechnologia – Wskaźniki i referencje
Podstawy informatyki Rekurencja i rekurencja Grupa: 1A
Podstawy informatyki Powtórka Grupa: 1A Prowadzący: Grzegorz Smyk
Tablice jednowymiarowe 1
Podstawy programowania PP – WYK3 Wojciech Pieprzyca.
Podstawy programowania PP – LAB4 Wojciech Pieprzyca.
Podstawy programowania PP – LAB5 Wojciech Pieprzyca.
Dr Anna Kwiatkowska Instytut Informatyki
Podprogramy.
Zadania Bazy danych.
Inżynieria Oprogramowania
Podstawy programowania II Wykład 2: Biblioteka stdio.h Zachodniopomorska Szkoła Biznesu.
Zbiór do posortowania mieści się w pamięci
Podstawy programowania
Podstawy programowania. Język C i C++– podstawy Temat: 1
Podstawy informatyki Struktury, operatory, wyjątki
Procedury i funkcje.
Programowanie strukturalne i obiektowe
JAVA.
Systemy wejścia i wyjścia Michał Wrona. Co to jest system wejścia i wyjścia? Pobierania informacji ze źródeł danych, zdolnych przesyłać sekwencje bajtów,
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Przekazywanie parametrów do funkcji oraz zmienne globalne i lokalne
Komendy SQL do pracy z tabelami i bazami
ZWIĄZKI MIĘDZY KLASAMI KLASY ABSTRAKCYJNE OGRANICZENIA INTERFEJSY SZABLONY safa Michał Telus.
Wykład 10 typ zbiorowy rekurencja.
Kurs języka C++ – wykład 13 ( )
Kurs języka C++ – wykład 9 ( )
Projektowanie stron WWW
Podstawy języka Instrukcje - wprowadzenie
Podstawy programowania
K URS JĘZYKA C++ – WYKŁAD 10 ( ) Szablony.
Programowanie strukturalne i obiektowe C++
Model obiektowy bazy danych
REGUŁY ZABEZPIECZEŃ W APLIKACJI OeBS Przedmiot i zakres szkolenia Przedmiot i zakres szkolenia Przedmiot i zakres szkolenia Przedmiot i zakres szkolenia.
Programowanie proceduralne Podstawy Programowania dla geoinformatyków Wykład 3 Rafał Witkowski, 2015.
Łukasz Bieszczad Mateusz Gałązka Karol Włodarek
Podstawy programowania
SciLab.
Wstęp do programowania Wykład 2 Dane, instrukcje, program.
Elementy programowania funkcyjnego w Javie 8. Pragmatyczny przegląd. (c) Krzysztof Barteczko 2014.
ASP.NET Kontrolki źródła danych i prezentacji danych w ASP.Net
1 Mapan i Mapnik. Czyli kilka słów o przeglądarkach leśnej mapy numerycznej. Zespół Zadaniowy ds. Leśnej Mapy Numerycznej. Margonin r.
 Formuła to wyrażenie algebraiczne (wzór) określające jakie operacje ma wykonać program na danych. Może ona zawierać liczby, łańcuchy znaków, funkcje,
Dariusz Nikiel. Klawisza ENTER używamy w celu zakończenia akapitu, a nie na końcu każdej linijki tekstu lub zdania. Klawisza ENTER używamy w celu zakończenia.
Haskell - Modules.
Rekurencja - Haskell Bartosz Pawlak Sebastian Żółtowski Adam Stegenda Krystian Sobótka Tomasz Gołębiewski.
Funkcje wyższego rzędu Moduły
Rozdział 5 REKURENCJA.
Podstawy Informatyki.
Funktory, funktory aplikatywne, MONoidy
Microsoft Disk Operating System
Funkcje wyższego rzędu
Functors, Applicative Functors and Monoids
Haskell Składnia funkcji.
Zapis prezentacji:

Funkcje wyższego rzędu

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)

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

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.

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]

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)

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

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

Moduły

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.

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 )

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"]

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

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]

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"

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"]

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]

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