High-level introduction to Functional Programming and Haskell

Contact us
2 days
EUR 1.800 (FI)

Request more information

Leevi Lehtinen
phone: +358 40 546 1469

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

Klar til at bestille? Eller bare til at høre mere?

Giv os et ring på 44 52 16 50, eller udfyld felterne, så ringer vi til dig!