Functional programming techniques (combinators, monads, continuation
passing style, ...). Functional data structures. Compilation,
optimalization and debugging of programs in functional programming
languages, especially in Haskell.
The knowledge of Haskell at the level of subject NPRG005 is required.
Last update: T_KAM (25.04.2008)
Techniky funkcionálního programování (kombinátory, monády, continuation passing style, ....).
Funkcionální datové struktury. Kompilace, optimalizace a ladění programů ve funkcionálních
programovacích jazycích, zejména v Haskellu.
Část přednášky proběhně formou referátů. Zápočet bude udělován za přednesení referátu nebo za
zápočtový program demonstrující některou z popsaných technik.
Předpokládají se znalosti Haskellu na úrovni předmětu NPRG005
Aim of the course -
Last update: T_KAM (25.04.2008)
The goal of the seminar is to familiarize the students with functional programming techniques and thereby improve their programming skills, especially the ability of abstraction and modularity.
Last update: T_KAM (25.04.2008)
Cílem semináře je seznámit studenty s technikami funkcionálního programování a prohloubit tak jejich programovací schopnosti, především v oblasti abstrakce a modularity.
Literature -
Last update: T_KAM (25.04.2008)
Jeremy Gibbons and Oege de Moor (eds.): The Fun of Programming, Palgrave, 2002, 288 pages. ISBN 0333992857.
Graham Hutton: Programming in Haskell, Paperback: 200 pages, Cambridge University Press (January 31, 2007), English, ISBN 0521692695.
Richard Bird: Introduction to Functional Programming using Haskell, 2nd edition, Prentice Hall Press, 1998, 460 pp., ISBN 0134843460.
Last update: T_KAM (25.04.2008)
Jeremy Gibbons and Oege de Moor (eds.): The Fun of Programming, Palgrave, 2002, 288 pages. ISBN 0333992857.
Graham Hutton: Programming in Haskell, Paperback: 200 pages, Cambridge University Press (January 31, 2007), English, ISBN 0521692695.
Richard Bird: Introduction to Functional Programming using Haskell, 2nd edition, Prentice Hall Press, 1998, 460 pp., ISBN 0134843460.
Syllabus -
Last update: T_KAM (25.04.2008)
1) Type system and its extensions, existential types, generic programming. Type classes, functional dependencies.
2) Monads and their extensions, monad transformers, arrows.
3) Combinators and parsing.
4) Continuation passing style.
5) Functional data structures.
6) Compilation and optimalization of functional programming languages.
7) Tools for profiling, debugging and testing.
8) Foreign function interface and communication with the operating system, exceptions and their handling.
9) Concurrency.
Last update: T_KAM (25.04.2008)
1) Typový systém a jeho rozšíření, existenciální typy, generické programování. Typové třídy, funkcionální závislosti.
2) Monády a jejich rozšíření, monad transformers, arrows.
3) Kombinátory a parsování.
4) Continuation passing style.
5) Funkcionální datové struktury.
6) Kompilace a optimalizace funkcionálních jazyků.
7) Nástroje pro profilování, ladění a testování.
8) Rozhraní s jinými programovacími jazyky a s operačním systémem, výjimky a jejich ošetřování.