Uniwersytet Kardynała Stefana Wyszyńskiego w Warszawie - Centralny System Uwierzytelniania
Strona główna

Programowanie w logice i funkcyjne WM-I-S2-E2-PLF
Wykład (WYK) Semestr letni 2023/24

Informacje o zajęciach (wspólne dla wszystkich grup)

Liczba godzin: 30
Limit miejsc: (brak limitu)
Literatura:

Literatura podstawowa

1. Clocksin, Mellish, Prolog. Programowanie. Helion

2. Paul Hudak, John Peterson, Joseph Fasel, A Gentle Introduction to Haskell, Version 98, 2000,

wolny dostęp: https://www.haskell.org/tutorial/

Literatura uzupełniająca

3. Nilsson, Małuszyński, Programming in Prolog, Wiley & Sons Ltd, wolny dostęp: http://www.ida.liu.se/~ulfni53/lpp/

4. Harold Abelson, Gerald Jay Sussman, Julie Sussman, Struktura i interpretacja programów komputerowych, WNT.

5. Paul Hudak, John Peterson, Joseph Fasel, A Gentle Introduction to Haskell, Version 98, 2000,

wolny dostęp: https://www.haskell.org/tutorial/

6. Richard Bird, Introduction to Functional Programming using Haskell.

7. Simon Peyton Jones (ed.), Haskell 98. Language and Libraries. The Revised Report. 2002, wolny dostęp: https://www.haskell.org/definition/haskell98-report.pdf

Zakres tematów:

1. Podstawowe cechy paradygmatu programowania w logice: deklaratywny styl programowania, mechanizm wnioskowania, formuły Hornowskie,

środki kontroli nad wnioskowaniem/obliczeniem. Mechanizm rezolucji dla klasycznego rachunku zdań.

2. Składnia logiki pierwszego rzędu. Uniwersum Herbranda. Formuły Hornowskie. Definicja spełniania dla formuł Hornowskich.

Unifikacja i rezolucja w logice pierwszego rzędu. Twierdzenie o istnieniu najbardziej ogólnego unifikatora (MGU).

3. SLD rezolucja w logice pierwszego rzędu. Twierdzenie o pełności dla rezolucji i SLD rezolucji. Twierdzenie o nierozstrzygalności SLD rezolucji.

Reprezentowanie wiedzy w Prologu.

Podstawy pracy z interpreterem Prologu (Swi-Prolog).

4. Znaczenie symboli '=' i '==' w Prologu. Kontrola nad przebiegiem wykonania programu: kolejność wyboru

klauzul do unifikacji, nawracanie, odcięcie (cut), wymuszenie nawrotu (fail).Sledzenie wykonania programu. Meta predykaty: clause/2, assert/1, retract/1.

5. Obsługa plików, programowanie wejścia i wyjścia.

Arytmetyka w Prologu. Znaczenie 'is' oraz '=:='."

6. Negacja w Prologu. Założenie o domkniętości świata (closed world assumption).

SLDNF rezolucja. Modele stabilne.

7. Reprezentowanie struktur rekurencyjnych: lista, drzewo. Technika programowania z akumulatorem. Listy różnicowe.

8. Wprowadzenie do rachunku lambda. Interpretacje wartości logicznych, instrukcji warunkowej, iloczynu kartezjańskiego w rachunku lambda. Redukcje termów. Operator punktu stałego Y.

9. Arytmetyka w rachunku lambda. Własności programowania funkcyjnego: przejrzystość referencyjna, niezmienność danych, bezstanowość, brak efektów ubocznych, funkcje jako podstawowe obiekty, rekursja, leniwa ewaluacja, typy, polimorfizm, funkcje wyższych rzędów.

10. Wprowadzenie do języka Haskell. Podstawy składni, konwencje nazewnicze i pierwsze programy.

Podstawowe typy: logiczny, znakowy, typy liczbowe. Listy, pary, typy funkcji. Operacje curry i uncurry. Polimorfizm. Klasy typów. Definiowanie typów.

11. Definiowanie funkcji: wyrażenia lambda, złożenie funkcji, rekursja, dopasowywanie wzorca.

Definiowanie funkcji przez równoległą rekursję. Podstawowe operacje na listach.

12. Typy rekurencyjne. Definiowanie funkcji działających na typach rekurencyjnych. Implementacja drzewa.

13. Kontynuacje i monady.

14. Problem obsługi wejścia i wyjścia w językach funkcyjnych, efekty uboczne, niepowtarzalność wyniku. Typ IO. Obsługa plików.

15. Struktury nieskonczone w Haskellu.

Grupy zajęciowe

zobacz na planie zajęć

Grupa Termin(y) Prowadzący Miejsca Liczba osób w grupie / limit miejsc Akcje
1 każdy poniedziałek, 13:15 - 14:45, sala 312
Konrad Zdanowski 14/19 szczegóły
Wszystkie zajęcia odbywają się w budynku:
Kampus Wóycickiego Bud. 21
Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest Uniwersytet Kardynała Stefana Wyszyńskiego w Warszawie.
ul. Dewajtis 5,
01-815 Warszawa
tel: +48 22 561 88 00 https://uksw.edu.pl
kontakt deklaracja dostępności mapa serwisu USOSweb 7.1.1.0-5 (2025-02-26)