Zaawansowane programowanie funkcyjne
Tematem seminarium jest przegląd zaawansowanych cech
języków funkcyjnych, a także technik programowania
wykorzystujących te cechy. Przedstawione zostaną
m. in. takie zagadnienia jak:
- Monady i transformatory monad
- Kontynuacje
- Transformacje programów
- Klasy typów
- Algebra programów funkcyjnych
- Polimorfizm wyższego stopnia (higher-rank polymorphism)
- Uogólnione algebraiczne typy danych (GADT's)
- Typy zależne
- Metaprogramowanie (programowanie wieloetapowe, ewaluacja częściowa)
- Programowanie reaktywne
|
Terminarz
Data |
Temat |
Literatura |
Notatki |
Zadania |
Prelegent |
25.02.2015 |
Spotkanie organizacyjne |
Danvy 2011, Peyton Jones et al. 1993, Hughes 1990 |
|
|
|
04.03.2015 |
Monady w programowaniu funkcyjnym |
Wadler
1992,
All About Monads |
Slajdy |
Zadania |
Patryk Kajdas |
11.03.2015 |
Interpretery definiujące język programowania |
Reynolds 1998, Ager et al. 2003 |
Slajdy Implementacja |
Zadania |
Krzysztof Wróbel |
18.03.2015 |
Typy fantomowe |
Hinze 2003 |
Slajdy Kod |
Zadania |
Marcin Kaczmarek |
25.03.2015 |
GADT, typy egzystencjalne i polimorfizm wyższego rzędu |
GADT,
Existential type,
Rank-N types |
Slajdy |
Zadanie |
Rafał Łasocha |
01.04.2015 |
Programowanie funkcyjne z typami zależnymi |
Idris
tutorial, Brady 2013 |
Slajdy Kod |
Zadania |
Łukasz Hanuszczak |
15.04.2015 |
Moduły a klasy typów |
Wadler & Blott 1989, Wehr &
Chakravarty 2008
|
Slajdy |
Zadania
Kod
|
Bartosz Zasieczny |
22.04.2015 |
Obliczenia równoległe w Haskellu |
Marlow 2013
|
Slajdy
|
Zadania
|
Marek Imiełowski |
29.04.2015 |
Programowanie wieloetapowe |
Taha 2003, Taha 2007 |
Slajdy
|
Zadanie
|
Maciej Jaromin |
13.05.2015 |
Reaktywne programowanie funkcyjne |
Elm |
Slajdy |
Zadanie |
Mateusz Kołaczek |
20.05.2015 |
Algebra programów funkcyjnych |
Meijer et al. 1991 |
Slajdy |
Zadania |
Filip Pawlak |
27.05.2015 |
Towards internet of code |
|
Slajdy |
Zadanie |
Łukasz Dąbek |
03.06.2015 |
O algebraicznej semantyce nawrotów i
cięcia (wykład gościnny) |
|
|
Zadania |
Maciej Piróg |
10.06.2015 |
Zipper |
Huet 1997 |
Slajdy |
Zadanie |
Dariusz Bukowski |
10.06.2015 |
Funktory aplikatywne |
McBride & Paterson 2008 |
Slajdy |
Zadania |
Sebastian Cielemęcki |
|
Literatura
- [Hughes 1990] Why functional programming matters. John
Hughes. Research Topics in Functional Programming,
ed. D. Turner, Addison-Wesley, 1990, pp 17–42.
- [Wadler 1992] The essence of functional
programming. Philip Wadler. Invited talk, 19'th
Symposium on Principles of Programming Languages, ACM
Press, Albuquerque, January 1992.
- [Brady 2013] Idris, a General Purpose Dependently
Typed Programming Language: Design and Implementation,
Edwin Brady, Journal of Functional Programming, August
2013.
- [Ager et al. 2003] A Functional Correspondence between
Evaluators and Abstract Machines. Mads Sig Ager, Dariusz Biernacki,
Olivier Danvy and Jan Midtgaard. In D. Miller, editor, Proceedings of
the 5th ACM-SIGPLAN International Conference on Principles and
Practice of Declarative Programming (PPDP 2003), pp. 8-19, Uppsala,
Sweden, August 2003. ACM Press.
- [Reynolds 1998] Definitional interpreters for
higher-order programming languages. John
C. Reynolds. Higher-Order and Symbolic Computation,
11(4)363-397, 1998.
- [Hinze 2003] Fun with phantom types. Ralf Hinze. 2003
- [Wadler & Blott 1989] How to make ad-hoc polymorphism
less ad hoc. Philip Wadler and Stephen Blott. 16'th
Symposium on Principles of Programming Languages, ACM
Press, Austin, Texas, January 1989.
- [Kiselyov et al. 2005] Backtracking, interleaving, and
terminating monad transformers. Oleg Kiselyov,
Chung-chieh Shan, Daniel P. Friedman, Amr Sabry. 2005.
- [Taha 2003] A Gentle Introduction to Multi-stage
Programming. Walid Taha. Domain-Specific Program
Generation 2003: 30-50.
- [Taha 2007] A Gentle Introduction to Multi-stage
Programming, Part II. Walid Taha. GTTSE 2007: 260-290.
- [Meijer et al. 1991] Functional Programming with
Bananas, Lenses, Envelopes and Barbed Wire. Erik Meijer,
Maarten M. Fokkinga, Ross Paterson. FPCA 1991: 124-144.
- [Wehr & Chakravarty 2008] ML Modules and Haskell Type
Classes: A Constructive Comparison. Stefan Wehr, Manuel
M. T. Chakravarty. APLAS 2008: 188-204.
- Perełki
programowania funkcyjnego.
- Lista
publikacji Richarda Birda.
- Publikacje
Ralfa Hinze.
- [Huet 1997] The Zipper. Gerard Huet. JFP 7(5):549-554, 1997.
- [McBride & Paterson 2008] Applicative programming with
effects. Conor McBride, Ross
Paterson. J. Funct. Program. 18(1): 1-13, 2008.
|
Wymagania
Aby zaliczyć seminarium na ocenę pozytywną należy:
- być obecnym na co najmniej 10 spotkaniach
- opracować i przedstawić wybrany temat (50%)
- rozwiązać wybrane zadania przygotowane przez
pozostałych uczestników seminarium (50%).
Na opracowanie tematu składa się:
- przygotowanie prezentacji;
- przygotowanie dodatkowych materiałów w postaci
slajdów, notatek, implementacji, etc. i przesłanie ich
do prowadzącego nie później niż 4 dni po seminarium;
- przygotowanie zadania programistycznego (wraz z
rozwiązaniem) ilustrującego omawiany temat;
- ocena studenckich rozwiązań zaproponowanego zadania
(autor zadania ustala termin nadsyłania rozwiązań).
W ciągu semestru należy rozwiązać co najmniej 3 zadania
zaproponowane przez uczestników seminarium (nie licząc
własnego).
Prezentacja jest oceniana na podstawie zawartości
merytorycznej (80%) oraz formy (20%).
Porady na temat prezentacji naukowych:
- [Danvy 2011]
Communication in Computer Science. Olivier Danvy. 4th Summer School on
Generative and Transformational Techniques in Software Engineering,
July 2011, Braga, Portugal.
- [Peyton Jones et al. 1993]
How to give a good research talk. Simon Peyton Jones,
John Launchbury, John Hughes. SIGPLAN Notices 28(11),
November 1993.
|
|