Determinism analysis in the Mercury compiler
Fergus Henderson
Department of Computer Science,
The University of Melbourne,
Parkville 3052, Australia.
fjh@cs.mu.oz.au
Zoltan Somogyi
Department of Computer Science,
The University of Melbourne,
Parkville 3052, Australia.
zs@cs.mu.oz.au
Thomas Conway
Department of Computer Science,
The University of Melbourne,
Parkville 3052, Australia.
conway@cs.mu.oz.au
Abstract
Mercury is a new purely declarative logic programming language.
The Mercury determinism system allows programmers to specify
which predicates never fail and which predicates succeed at most once.
This information allows the compiler to check the program for errors,
pinpointing predicates that do not satisfy their declarations.
This makes programmers significantly more productive
and enhances the reliability of their programs.
The Mercury compiler also uses determinism information
to generate much faster code than any other logic programming system.
This paper presents the algorithms used by the Mercury compiler
to infer determinism information and to detect determinism errors.
Conference Home Page