Aldor
From HandWiki
Paradigm | Multi-paradigm: object-oriented, functional, imperative, dependent typed, logic |
---|---|
Designed by | Richard Dimick Jenks, Barry Trager, Stephen Watt, James Davenport, Robert Sutor, Scott Morrison |
Developer | Thomas J. Watson Research Center |
First appeared | 1990 |
Stable release | 1.0.3
|
Preview release | 1.1.0
|
Platform | Axiom computer algebra system |
OS | Linux, Solaris, Windows |
License | Aldor Public 2.0, Apache 2.0 |
Filename extensions | .al, .as |
Website | www |
Major implementations | |
Axiom computer algebra system | |
Influenced by | |
A#, Pascal, Haskell |
Aldor is a programming language.[1][2][3] It is the successor of A# as the extension language of the Axiom computer algebra system.
Aldor combines imperative, functional, and object-oriented features. It has an elaborate type system,[4] allowing types to be used as first-class values. Aldor's syntax is heavily influenced by Pascal, but it is optionally indentation-sensitive, using whitespace characters and the off-side rule, like Python. In its current implementation, it is compiled, but an interactive listener is provided.
Aldor is distributed as free and open-source software, under the Apache License 2.0.
Examples
The Hello world program looks like this:
#include "aldor" #include "aldorio" stdout << "Hello, world!" << newline;
Example of dependent types (from the User Guide):
#include "aldor" #include "aldorio" #pile sumlist(R: ArithmeticType, l: List R): R == s: R := 0; for x in l repeat s := s + x s import from List Integer, Integer, List SingleFloat, SingleFloat stdout << sumlist(Integer, [2,3,4,5]) << newline stdout << sumlist(SingleFloat, [2.0, 2.1, 2.2, 2.4]) << newline
99 Bottles of Beer:
#include "aldor" #include "aldorio" import from Integer, String; bob(n: Integer): String == { b: String := " bottle"; if n ~= 1 then b := b + "s"; b + " of beer"; } main(): () == { n: Integer := 99; otw: String := " on the wall"; -- refrain while n > 0 repeat { stdout << n << bob(n) << otw << ", " << n << bob(n) << "." << newline; stdout << "Take one down and pass it around, "; n := n - 1; if n > 0 then stdout << n; else stdout << "no more"; stdout << bob(n) << otw << "." << newline; stdout << newline; } -- last verse stdout << "No more" << bob(n) << otw << ", no more" << bob(n) << "." << newline; stdout << "Go to the store and buy some more, "; n: Integer := 99; stdout << n << bob(n) << otw << "." << newline; } main();
References
- ↑ Gerdt, Vladimir P.; Koepf, Wolfram; Mayr, Ernst W.; Vorozhtsov, Evgenii V. (7 September 2010) (in en). Computer Algebra in Scientific Computing: 12th International Workshop, CASC 2010, Tsakhadzor, Armenia, September 6-12, 2010, Proceedings. Springer. ISBN 978-3-642-15274-0. https://books.google.com/books?id=rtBqCQAAQBAJ&dq=%22Aldor%22++programming+-wikipedia&pg=PA74. Retrieved 5 July 2023.
- ↑ Kirchner, Helene; Ringeissen, Christophe (30 December 2006) (in en). Frontiers of Combining Systems: Third International Workshop, FroCoS 2000 Nancy, France, March 22-24, 2000 Proceedings. Springer. ISBN 978-3-540-46421-1. https://books.google.com/books?id=GXGqCAAAQBAJ&dq=%22Aldor%22++programming+-wikipedia&pg=PA137.
- ↑ Kerber, Manfred; Kohlhase, Michael (2 April 2001) (in en). Symbolic Computation and Automated Reasoning: The CALCULEMUS-2000 Symposium. CRC Press. ISBN 978-1-4398-6423-4. https://books.google.com/books?id=0UBZDwAAQBAJ&dq=%22Aldor%22++programming+-wikipedia&pg=PA207. Retrieved 5 July 2023.
- ↑ "Aldor Programming Language". http://www.aldor.org.
External links
Original source: https://en.wikipedia.org/wiki/Aldor.
Read more |