Paul Bone

The Mercury Programming Language

Paul Bone based on slides by Zoltan Somogyi
Melbourne Functional User Group
April, 2015
Slides, Extra slides


Mercury is a pure declarative logic/functional language, it looks like Prolog but feels like (strict) Haskell. Mercury's strong type system, mode system and determinism system make it very different from Prolog. Meanwhile strict evaluation and logic programming features make it quite different from Haskell. In this presentation we will see how mode and determinism systems work together to create a declaratively pure logic programming language. We will also explore some cool features that can be added to a pure language: declarative debugging and automatic parallelisation.

After giving the main presentation I was asked for more information about some fancier things that Mercury can do, in particular my work on Automatic Parallelisation. I found the second set of slides online and used some of those to give a more informal overview of parallelism and automatic parallelism in Mercury.