Write a Blog >>
ICFP 2020
Thu 20 - Fri 28 August 2020
Sun 23 Aug 2020 09:00 - 12:30 at Tutorials 2 - Audio, Video & Web Live Coding in Haskell

Tutorial content

Learn how to build a small arcade game while you’re playing it.

What you will learn

  • The basics of Arrowized Functional Reactive Programming
  • The concepts behind the livecoding framework “Essence of Livecoding”
  • If time permits, how to combine different kinds of media into one program

What we will do

  • Develop a small 2d minigolf video game
  • Add sound to it
  • Possibly add other functionality of your choice, e.g. a web server

How we will do it

  • I’ll give a brief overview over the framework
  • You’ll get started hands on with some simple tasks to write a game
  • We’ll discuss the solutions together
  • Depending on the number of participants, you’ll be assigned groups in breakout rooms where you will work together on harder tasks
  • I’ll come to each group in a breakout room and support your progress
  • We’ll have a lightning presentation (one minute each) of all the games you built

About the framework (preprint abstract)

One rarely encounters programming languages and frameworks that provide general-purpose and type-safe hot code swap. It is demonstrated here that this is entirely possible in Haskell, by faithfully following the motto of live coding: “Change the program, keep the state.”

With generic programming, one easily arrives at an automatic state migration function. The approach can be generalised to an arrowized Functional Reactive Programming framework that is parametrized by its side effects. It allows for building up complete live programs from reusable, modular components, and to separate data flow cleanly from control flow. Useful utilities for debugging and quickchecking are presented.

Your background

Required background

  • Basic Haskell knowledge (Monads, data types, records, type classes, simple transformers like StateT and ReaderT)
  • Basic Arrow notation (combinators such as >>>, *** and &&&, proc -> do - notation)

Optional, helpful background

  • Grasp of basic concepts in Functional Reactive Programming (FRP) such as signals/behaviours, streams, events.
  • Basic physics simulation (position, speed, simple collision detection)
  • The gloss vector graphics library



We will begin development from a scaffolding project. You will need to clone it and install certain software in order to participate.

The scaffolding project is found here: https://github.com/turion/essence-of-live-coding-tutorial/

Please complete the installation steps before attending the tutorial. If any of the steps fails, please leave an issue at https://github.com/turion/essence-of-live-coding-tutorial/issues so we can solve the problem before the tutorial starts.

You have successfully set up your environment once you see an interactive window with a ball that starts to move and bounce once you click in it. Please make sure that you complete all the steps until there.

Optional reading material


For any technical support or inquiries, please open an issue on https://github.com/turion/essence-of-live-coding-tutorial/issues.

Sun 23 Aug
Times are displayed in time zone: (GMT-04:00) Eastern Time (US & Canada) change

09:00 - 12:30: Tutorials - Audio, Video & Web Live Coding in Haskell at Tutorials 2
icfp-2020-tutorials09:00 - 12:30
Manuel Bärenzsonnen eServices GmbH