Miranda is a pure, non-strict, polymorphic, higher order functional programming language designed by David Turner in 1983-6. The language was widely taken up, both for research and for teaching, and had a strong influence on the subsequent development of the field, influencing in particular the design of Haskell, to which it has many similarities. Miranda is however a simpler language. Here is a short description. For more detail you can read the Overview paper below, look at these examples of Miranda scripts, or read the definitions in the Miranda standard environment.

DOWNLOAD 64bit compatible source release (NEW).

Why the name Miranda?

Browsable version of Miranda system manual

Browsable version of UNIX manual page mira.1

Papers about Miranda

The following paper covers the main features of the language in around a dozen pages. First published in 1986, it remains the best introduction to Miranda:

D. A. Turner An Overview of Miranda, SIGPLAN Notices 21(12):158-166, December 1986. PDF [139K]

This earlier description of Miranda contains a more detailed discussion of algebraic and abstract data types, including algebraic data types with laws:

D. A. Turner Miranda: A Non-Strict Functional Language with Polymorphic Types, Proceedings IFIP Conference on Functional Programming Languages and Computer Architecture, Nancy, France, September 1985 (Springer Lecture Notes in Computer Science 201:1-16).

The first published account of functional programming in Miranda is the following (no electronic version exists):

D. A. Turner Functional Programs as Executable Specifications in proceedings of a meeting of the Royal Society of London on 15 February 1984, published as Mathematical Logic and Programming Languages pp 29-54, eds Hoare and Shepherdson (Prentice Hall, 1985).

BOOKS

Simon Thompson Miranda: the Craft of Functional Programming, Addison-Wesley 1995. This is available on a demand print basis from Addison Wesley.

Chris Clack, Colin Myers & Ellen Poon, Programming with Miranda, Prentice Hall 1995. The rights in this book have reverted to the authors, who have kindly made it available online (follow link).

Richard Bird & Philip Wadler An Introduction to Functional Programming, Prentice Hall 1988. Out of print but you may find it in a library and it may be possible to obtain second hand copies. This was widely used in conjunction with Miranda for teaching functional programming as the first programming course and is distinguished by its careful development of reasoning principles. There is a second edition by Richard Bird alone using Haskell which is still in print, but is now (2014) superceded by a third edition published by C.U.P.

Background Papers

John Hughes Why Functional Programming Matters. In D. Turner, editor, Research Topics in Functional Programming, Addison-Wesley, 1990. PDF [200K] A classic advocacy paper.

Philip Wadler A critique of Abelson and Sussman or why calculating is better than scheming, SIGPLAN Notices 22(3):83-94, March 1987. PDF [1062K] Critical comparison, Scheme versus pure lazy fp (for teaching).

David Turner Church's Thesis and Functional Programming, in ed. A. Olszewski, Church's Thesis after 70 years, pp 518-544, Ontos Verlag, Berlin 2006. PDF [222K] A survey and a tribute to Church, who invented the lambda calculus and is thus the progenitor of functional programming. (Historical connection: Turner is one of Church's academic grandchildren.)

David Turner Some History of Functional Programming Languages, Proceedings TFP 2012, Springer LNCS 7829:1--20. PDF [292K]

Other links

bignum -- An infinite-precision floating-point function library, written by Martin Guy. Versions for both Miranda and Haskell.

SASL and KRC, earlier languages designed by David Turner, are predecessors of Miranda. (link for SASL to be added).

Miranda logo designed by Fritz Ruehr.

Miranda™ and the Miranda logo are trademarks of Research Software Limited.

Report problems/send comments to