Logic programming languages have been around for more than twenty years. Despite the expected advantages of a very high level programming language based upon well developed theories of logic over conventional programming languages (such as C, C++, Pascal and Ada) they have not had significant impact on the computer industry.
Mercury is a new logic/functional programming language, which combines the clarity and expressiveness of declarative programming with advanced static analysis and error detection features.
Mercury is highly optimized execution algorithm delivers efficiency far in excess of existing logic programming systems, and close to conventional programming systems.
Mercury addresses the problems of large-scale program development, allowing modularity, separate compilation, and numerous optimization/time trade-offs.
The current implementation does not yet completely implement the Mercury language. The main limitations of the current implementation are the following:
· We do not allow definite aliasing in the mode system. Without this, partially instantiated modes are unusable, and so are nested unique modes.
· The compiler does not yet use structure reuse or compile-time garbage collection to exploit unique modes.
· Type and mode inference are a bit imperfect.
In addition, design decisions in this implemenation have imposed the following limits:
· Predicates and functions can have at most about 1000 arguments.
· Higher-order terms can have at most about 500 arguments.
What's New in This Release: [ read full changelog ]
· This bugfix release fixes build problems on Solaris and NetBSD and adds support for selecting the C# compiler at configuration time.
· Various other minor bugs have been fixed.
· There are also some minor additions to the standard library.