The Mercury Programming Language
mercury.csse.unimelb.edu.au
mercury.csse.unimelb.edu.au
Here's a little oversimplification that I've found useful for understanding this stuff.
* Mercury is the Haskell of Prolog
* Curry is the Prolog of Haskell
It's interesting to see a lot of the ideas in Mercury addressed from the opposite direction Curry. See for yourself: http://www-ps.informatik.uni-kiel.de/currywiki/I think every programmer should study esoteric languages. It's akin to the contrast of arithmetic and mathematical logic - you have the opportunity to appreciate and experience the ideal rather than the mundane. Not that beauty can't be found in building a web application (or any other application for that matter) using a framework and one's own set of libraries; I do everyday because I pour the expression of who I am into my practice - the thing is, it's [esoteric languages] the same sort of joy one derives from contemplating deep philosophical questions or from deliberately cultivating character through introspection.
I felt like whipping out the PhilosoRaptor tonight I guess...
People are itching for declarative testing systems. Writing testing code by hand is tedious and error-prone. Static typing works for a lot of things, but isn't completely satisfactory. Randomized testing is also useful (give a function that tests a property, give random_int -> value generators for its arguments, let it find edge cases), but those are only two facets of a much bigger picture.
I'm really interested in more modern takes on Prolog, but from what I've read about Mercury, it seems to throw out my favorite aspect: computing with partial information. Constraint logic programming seems like a more valuable direction, though I see the appeal in a Prolog-esque language informed by modern type theory, and I'm particularly interested in what it does with linear types.
Logic programming languages [...] have not had
significant impact on the computer industry.
Mercury is a new logic/functional programming language
Mercury is "new" and admittedly interesting since 15 years now. Please somebody update the blurb. :- module hello.
:- interface.
:- import_module io.
:- pred main(io::di, io::uo) is det.
:- implementation.
main(IOState_in, IOState_out) :-
io.write_string("Hello, World!\n", IOState_in, IOState_out).