Programming Languages and Paradigms
(summer semester 2017-2018, moodle)
Resources
Resources
Haskell
Haskell
- Haskell: The Craft of Functional Programming, Simon Thompson, Third Edition, 2011.
- Pearls of Functional Algorithm Design, Richard Bird, 2010.
- Purely Functional Data Structures, Chris Okasaki, 1996.
- Monads:
- The essence of functional programming, Ph. Wadler, In Proc. of POPL'92.
- Applications:
- Game programming in Haskell [slides].
- Cryptocurrencies: Project Cardano.
- Smart contracts: Pact.
Prolog
Prolog
- The Art of Prolog, Leon S. Sterling and Ehud Y. Shapiro, Second Edition, 1999.
Smalltalk
Smalltalk
- Smalltalk-80: the language and its implementation, Adele Goldberg, David Robson, 1983.
Haskell Labs
Haskell Labs
- Introduction [00.pdf][00-sol.pdf]
- All shades of Fibonacci [01.pdf][01-sol.pdf]
- Filter, map, fold [02.pdf][02-sol.pdf]
- Collatz, real fast [03.pdf][time.hs][03-sol.pdf]
- Functor, Trees [04.pdf][04-sol.pdf]
- Assignment. Arithmetic expressions [05.pdf][05-sol.pdf]
- Monads: Identity, Maybe, List [06.pdf][06-sol.pdf]
- More monads: List (cont.), Stream, Probabilistic, Tree [07.pdf][07-sol.pdf]
- Project. Even more monads: Reader, Writer, State. Tying the knot [08.pdf][08-sol.pdf]
- State monad (cont.). Comonads (sketch). [09.pdf][09-sol.pdf]
- Monad transformers. Composition of monads [10.pdf][10-sol.pdf]
- Parsing: Basic combinators. Parsing expressions in Polish notation [11.pdf][11-sol.pdf].
- Parsing expressions in infix notation [12.pdf][12-sol.pdf].
- Type checking and type reconstruction [13.pdf][13-sol.pdf].