Easier to read with cream paper, a tint, more contrast or larger text? Choose your colours and text, once, for every page.

Free resources

Logic and functional programming

Ask questions of facts and rules in Prolog, and write functions with types in Haskell.

← All topics

Two labs, each a terminal with a language that thinks differently: SWI-Prolog, where a program is facts and rules and running it is asking a question, and GHC, where a program is functions with types.

Hands-on labs

Hands-on lessons

Every lesson here is worked in a hands-on lab: a real environment with a terminal beside it, nothing to install. A free account runs every lab, with enough free credit each month to follow most lessons, and is given the basic lessons on Home; with no account you can run the Git lab and the SQL lab.

Hands-on lesson · container lab

Prolog Basics

Work through this lesson in a real lab, with a terminal beside it, not just by reading.

A private SWI-Prolog interpreter for each student: facts, rules, questions and a rule that calls itself. Code on GitHub.

How it works · Source on GitHub · Create a free account to run it

Hands-on lesson · container lab

Haskell Basics

Work through this lesson in a real lab, with a terminal beside it, not just by reading.

A private GHC Haskell compiler for each student: functions with types, lists, folds and a type of your own. Code on GitHub.

How it works · Source on GitHub · Create a free account to run it

Basic lessons are given to every free account, on Home, and to every college. Full course lessons are for colleges. Labs marked as an Ubuntu VM lab are set by a teacher in a module, and their lessons start the VM for you.

Run these yourself

A free personal account runs every lab here and its lesson, with enough free credit each month to follow most lessons. Teaching a class? Start a college and set them for your students.

Make a free accountStart a college

Already have an account? Sign in