Mercury (programming language): Difference between revisions

Content deleted Content added
m rv: Ralph Becket is student and not likely to have his own article
No edit summary
Line 1:
'''Mercury''' is a [[Functional programming|functional]] [[logic programming|logic]] [[programming language]] based on [[Prolog]], but more geared towards practical applications. The latest official release was version 0.12, on the 9th September, 2005.
 
Mercury has several features intended for better [[software engineering]] than is possible with Prolog. It is [[compiler|compiled]] rather than interpreted, as is traditional for logic programming languages. It features a sophisticated, strict [[Data type|type]] and mode system. Its authors claim these features combined with logic programming's abstract nature speeds writing of reliable programs. Mercury's module system enables division into self-contained units, a problem for past logic programming languages. (But note that several existing Prolog implementations also include module systems.)
 
Mercury is a more "pure", and therefore more [[Declarative programming|declarative]], language than Prolog, since it does not have "extra-logical" Prolog features like the "cut" (a Prolog construct which prevents [[backtracking]]) and [[imperative programming|imperative]] [[I/O]]. This makes the coding of sequential algorithms somewhat more cumbersome, but it makes automated program [[Optimization (computer science)|optimization]] easier. This means that it can produce significantly faster code than Prolog.
 
Hello World in Mercury:
Line 23:
 
Mercury is still highly experimental, and virtually unused outside the team of its creators.
 
Mercury has several back-ends, including low-level C (the original Mercury back-end), high-level C, Microsoft's IL for .NET, Sun's JVM, and assembler via the [[gcc]] back-end (the last three are only considered alpha or beta quality). This makes it useful for targeting multiple platforms, or linking with code written in multiple back-ends. The ability to include native code across these platforms is helpful, though it limits the portability to other Mercury back-ends.
 
Mercury is available for most [[Unix]] platforms, as well as for Microsoft Windows using the Cygwin toolset.
 
==External links==