High-level introduction to Functional Programming and Haskell
Interested? Contact us!
2 days
2 days
EUR 1.800 (FI)
Request more information
Leevi Lehtinen
phone: +358 40 546 1469
leevi.lehtinen@nohau.se
This is suitable for software developers but also for other team members with a general technical understanding of programming.
The goals of this course are to
- Understand what functional programming is about, what differences between functional languages exist, and how Haskell fits into this space
- Contrast the approaches of different programming languages to programming problems by example
- Look at several examples of how to solve programming problems in Haskell
- Discuss how the type system of Haskell helps in precisely modelling domains, thereby not just preventing all kinds of errors at an early stage, but also helping with development
- Allow participants to develop a superficial understanding of Haskell syntax and how to read it
- Write a few very small Haskell programs
The position of Haskell among programming languages
- Imperative, object-oriented and functional programming languages
- Dynamic vs static types
- High-level vs low-level (systems) languages
- Higher-order functions
- Lazy vs eager evaluation
- Implicit vs explicit (side) effects
Algebraic datatypes for domain modelling
- Nominal vs structural type systems
- Light-weight type safety by introducing meaningful domain-specific concepts
- Controlling the interface of user-defined datatypes
- Optional values, union types
- Sum types, enumeration types
- Parameterized datatypes and polymorphism
- How types can provide guidance during programming
Advantages of parametric polymorphism
- How making a function more generic restricts its implementation in a good way
- How to make true statements about functions just by looking at their types
- Contrasting with other forms of polymorphism
Compositionality and higher order functions
- The power of abstraction (and when to use it)
- How to decompose functional programming problems into smaller parts
- Lazy vs eager evaluation
- How the evaluation strategy affects program structure
Explicit effects
- How Haskell makes side effects explicit
- The IO type
- Advantages of explicit effects
- Using explicit effects
- Embedded domain-specific languages with multiple interpreters