High-level introduction to Functional Programming and Haskell

26.-27. September 2019 in Espoo
(Last registration day 6.9)
2 days
EUR 1.700 (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

Do you wish more information!

Contact us for offers, information or advice!