# Mercury

> functional logic programming language

**Wikidata**: [Q206040](https://www.wikidata.org/wiki/Q206040)  
**Wikipedia**: [English](https://en.wikipedia.org/wiki/Mercury_(programming_language))  
**Source**: https://4ort.xyz/entity/mercury

## Summary

Mercury is a software application that was influenced by Prolog and Hope.

## Summary
Mercury is a functional logic programming language that combines the features of logic programming with functional programming. It was developed at the University of Melbourne and is known for its strong typing, static typing, and support for multiple programming paradigms including logic, functional, and object-oriented programming.

## Key Facts
- Mercury was developed at the University of Melbourne, with inception dating back to April 8, 1995
- The language is licensed under the GNU General Public License
- Mercury supports multiple programming paradigms including logic programming, functional programming, object-oriented programming, and multi-paradigm programming
- The language features strong typing, static typing, parametric polymorphism, and uniqueness typing
- Mercury has a dedicated Twitter account (@MercuryLang) created on April 29, 2013
- The latest version mentioned is 14.01.1, released on September 8, 2014
- Mercury's official website is http://www.mercurylang.org
- The language is influenced by Prolog and Hope
- Mercury has a file extension of .m
- The language is available in multiple Wikipedia languages including English, Spanish, French, German, and others

## FAQs
### Q: What type of programming language is Mercury?
A: Mercury is a functional logic programming language that combines features of both logic programming and functional programming. It supports multiple paradigms including logic, functional, and object-oriented programming.

### Q: Who developed Mercury and where?
A: Mercury was developed at the University of Melbourne, with development beginning in 1995. The University of Melbourne is also listed as the copyright holder from 1993 to 2012.

### Q: What are the key features of Mercury?
A: Mercury features strong typing, static typing, parametric polymorphism, and uniqueness typing. It is a multi-paradigm language that supports logic programming, functional programming, and object-oriented programming.

## Why It Matters
Mercury represents an important advancement in programming language design by successfully combining the declarative nature of logic programming with the functional programming paradigm. This hybrid approach allows developers to write more expressive and maintainable code while benefiting from strong static type checking and efficient execution. The language's multi-paradigm nature makes it particularly valuable for complex problem-solving where different programming styles might be beneficial. Its development at the University of Melbourne has contributed to academic research in programming language theory and practical applications in software development. Mercury's influence from Prolog and Hope demonstrates its roots in established programming paradigms while pushing forward new possibilities in language design.

## Notable For
- Successfully combining logic programming and functional programming paradigms in a single language
- Strong static type system with uniqueness typing for memory safety and efficiency
- Multi-paradigm support allowing developers to choose the most appropriate programming style
- Academic development at the University of Melbourne contributing to programming language research
- Long-term development history with regular version releases since 1995

## Body
### Development and History
Mercury was developed at the University of Melbourne, with its inception dated to April 8, 1995. The language represents a significant effort in programming language research and development, combining multiple programming paradigms into a cohesive system.

### Technical Features
Mercury is characterized by its strong static type system, which includes parametric polymorphism and uniqueness typing. These features contribute to memory safety and efficient execution. The language supports multiple programming paradigms, including logic programming, functional programming, object-oriented programming, and multi-paradigm programming.

### Licensing and Distribution
The language is distributed under the GNU General Public License, making it freely available for use and modification. The copyright has been held by the University of Melbourne (1993-2012) and subsequently by The Mercury team (2013-present).

### Community and Resources
Mercury maintains an active presence on social media through its Twitter account (@MercuryLang) and has a dedicated subreddit. The language's source code is hosted on GitHub, and it has an issue tracker available at bugs.mercurylang.org. The official website provides comprehensive documentation and resources for developers.

### File Extensions and Identifiers
Mercury uses the .m file extension for its source code files. The language is also identified by the freebase ID /m/04zsm and has a dedicated topic on GitHub (mercury-lang).

## Schema Markup
```json
{
  "@context": "https://schema.org",
  "@type": "Thing",
  "name": "Mercury",
  "description": "A functional logic programming language developed at the University of Melbourne",
  "url": "http://www.mercurylang.org",
  "sameAs": [
    "https://www.wikidata.org/wiki/Q328",
    "https://en.wikipedia.org/wiki/Mercury_(programming_language)"
  ],
  "additionalType": "ProgrammingLanguage"
}

## References

1. [Release 14.01.1. 2014](https://github.com/Mercury-Language/mercury/releases/tag/version-14_01_1)
2. [Release 0.9. 1999](https://github.com/Mercury-Language/mercury/releases/tag/version-0_9)
3. [Release 0.9.1. 2000](https://github.com/Mercury-Language/mercury/releases/tag/version-0_9_1)
4. [Release 0.10. 2001](https://github.com/Mercury-Language/mercury/releases/tag/version-0_10)
5. [Release 0.11.0. 2002](https://github.com/Mercury-Language/mercury/releases/tag/version-0_11_0)
6. [Release 0.12.1. 2005](https://github.com/Mercury-Language/mercury/releases/tag/version-0_12_1)
7. [Release 0.12.2. 2006](https://github.com/Mercury-Language/mercury/releases/tag/version-0_12_2)
8. [Release 0.13.1. 2006](https://github.com/Mercury-Language/mercury/releases/tag/version-0_13_1)
9. [Release 10.04. 2010](https://github.com/Mercury-Language/mercury/releases/tag/version-10_04)
10. [Release 10.04.1. 2010](https://github.com/Mercury-Language/mercury/releases/tag/version-10_04_1)
11. [Release 10.04.2. 2010](https://github.com/Mercury-Language/mercury/releases/tag/version-10_04_2)
12. [Release 11.01. 2011](https://github.com/Mercury-Language/mercury/releases/tag/version-11_01)
13. [Release 11.07. 2011](https://github.com/Mercury-Language/mercury/releases/tag/version-11_07)
14. [Release 11.07.1. 2012](https://github.com/Mercury-Language/mercury/releases/tag/version-11_07_1)
15. [Release 11.07.2. 2012](https://github.com/Mercury-Language/mercury/releases/tag/version-11_07_2)
16. [Release 13.05. 2013](https://github.com/Mercury-Language/mercury/releases/tag/version-13_05)
17. [Release 13.05.1. 2013](https://github.com/Mercury-Language/mercury/releases/tag/version-13_05_1)
18. [Release 13.05.2. 2013](https://github.com/Mercury-Language/mercury/releases/tag/version-13_05_2)
19. [Release 14.01. 2014](https://github.com/Mercury-Language/mercury/releases/tag/version-14_01)
20. [Release 20.01. 2020](https://github.com/Mercury-Language/mercury/releases/tag/version-20_01)
21. [Release 20.01.1. 2020](https://github.com/Mercury-Language/mercury/releases/tag/version-20_01_1)
22. [Release 20.01.2. 2020](https://github.com/Mercury-Language/mercury/releases/tag/version-20_01_2)
23. [Release 20.06. 2020](https://github.com/Mercury-Language/mercury/releases/tag/version-20_06)
24. [Release 20.06.1. 2020](https://github.com/Mercury-Language/mercury/releases/tag/version-20_06_1)
25. [Release 22.01. 2022](https://github.com/Mercury-Language/mercury/releases/tag/version-22_01)
26. [Release 22.01.1. 2022](https://github.com/Mercury-Language/mercury/releases/tag/version-22_01_1)
27. [Release 22.01.2. 2022](https://github.com/Mercury-Language/mercury/releases/tag/version-22_01_2)
28. [Release 22.01.3. 2022](https://github.com/Mercury-Language/mercury/releases/tag/version-22_01_3)
29. [Release 22.01.4. 2022](https://github.com/Mercury-Language/mercury/releases/tag/version-22_01_4)
30. [Release 22.01.5. 2022](https://github.com/Mercury-Language/mercury/releases/tag/version-22_01_5)
31. [Release 22.01.06. 2023](https://github.com/Mercury-Language/mercury/releases/tag/version-22_01_06)
32. [Release 22.01.7. 2023](https://github.com/Mercury-Language/mercury/releases/tag/version-22_01_7)
33. [Release 22.01.8. 2023](https://github.com/Mercury-Language/mercury/releases/tag/version-22_01_8)
34. Freebase Data Dumps. 2013
35. [Source](https://github.com/Mercury-Language/mercury/blob/master/LICENSE)
36. [OpenAlex](https://docs.openalex.org/download-snapshot/snapshot-data-format)