AllExperts > Encyclopedia 
Search      
Find out about volunteering to AllExperts

Mercury programming language: Encyclopedia BETA


Free Encyclopedia
 Index · Browse A-Z  · Questions and Answers ·
Encyclopedia

Browse A-Z
ABCDEFGHIJKLMNOPQRSTUVWXYZNum


License
Disclaimer

 
 
 
 
Free Online Courses
12 Weeks to Weight Loss
Take Charge of Stress
Learn How to Bake
Budgeting 101
Deeper Faith
DIY Fashion Makeover

       MORE E-COURSES
 
   

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z  Misc

Mercury programming language



Mercury is a functional logic programming language geared towards real-world applications. It is developed at the University Of Melbourne Computer Science department under the supervision of Zoltan Somogyi. The first version was developed by Fergus Henderson, Thomas Conway and Zoltan Somogyi and was released on April 8th, 1995.

Mercury has several features intended for better software engineering. It is compiled rather than interpreted, as is traditional for logic programming languages. It features a sophisticated, strict 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 Prolog implementations now also support modules).

Mercury is a more pure, and therefore more declarative language than Prolog, since it lacks "extra-logical" Prolog statements such as "cut" (which prevents backtracking) and imperative I/O. This enables better program optimization, but makes coding sequential algorithms harder. Due to the optimizations enabled by the purity of the language, programs written in Mercury typically perform significantly faster than equivalent programs written in Prolog.

Mercury is available for most Unix platforms, Mac OS X, and Microsoft Windows (on the latter platform, it requires one of the Cygwin or MinGW toolsets, and can be compiled either with gcc or Microsoft Visual C++).

Notable programs written in Mercury include the Mercury compiler itself and the Prince XML formatter.

Back-ends

Mercury has several back-ends, which means it is possible to compile Mercury code into the following languages and code-styles:

Production level:
*Low-level C for GCC (the original Mercury back-end)
*High-level C

Alpha or beta quality (may not work well, or even be completely broken):
*IL for Microsoft's .NET
*Java bytecode for Sun's JVM
*Assembler via the GCC back-end

Past back-ends:
* Aditi, a deductive database system also developed at the University of Melbourne. Mercury-0.12.2 is the last version of Mercury that will support Aditi.

This makes Mercury a useful high-level language for targeting multiple platforms, or for linking with code written using multiple back-ends.

Mercury also has a strong foreign language interface, allowing code in other languages (depending on the chosen back-end) to be linked with Mercury code. The following foreign languages are possible:
Back-endForeign language(s)
C (both levels)C
ILIL, C# or Managed C++
JavaJava
Other languages can then be interfaced to by calling them from these languages. However, this means that foreign language code may need to be written several times for the different backends, otherwise portability between backends will be lost.

The most commonly used back-end is the original low-level C back-end. As both C backends are the only back-ends considered production quality, this means that you will not lose a great deal of portability using foreign-language C code.

Examples

Hello World in Mercury:
 :- module hello.
:- interface.
:- import_module io.
:- pred main(io::di, io::uo) is det.

:- implementation.
 main(!IO) :-
io.write_string("Hello, World!\n", !IO).
(adapted from Ralph Becket's Mercury tutorial).

External links

* Official Mercury Homepage
* Literate Programs (examples) in Mercury



Email this page
About Us | Advertise on This Site | User Agreement | Privacy Policy | Kids' Privacy Policy | Help
About and About.com are registered trademarks of About, Inc. The About logo is a trademark of About, Inc. All rights reserved.
This is the "GNU Free Documentation License" reference article from the English Wikipedia. All text is available under the terms of the GNU Free Documentation License. See also our Disclaimer.