Aldor | |
File Ext: | .al, .as |
Paradigm: | Multi-paradigm object-oriented, functional, imperative, dependent typed, logic |
Designer: | Richard Dimick Jenks, Barry Trager, Stephen Watt, James Davenport, Robert Sutor, Scott Morrison |
Developer: | Thomas J. Watson Research Center |
Latest Release Version: | 1.0.3 |
Latest Preview Version: | 1.1.0 |
Implementations: | Axiom computer algebra system |
Influenced By: | A#, Pascal, Haskell |
Platform: | Axiom computer algebra system |
Operating System: | Linux, Solaris, Windows |
License: | Aldor Public 2.0, Apache 2.0 |
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.
The Hello world program looks like this:
stdout << "Hello, world!" << newline;
Example of dependent types (from the User Guide):
sumlist(R: ArithmeticType, l: List R): R
import from List Integer, Integer, List SingleFloat, SingleFloatstdout << sumlist(Integer, [2,3,4,5]) << newlinestdout << sumlist(SingleFloat, [2.0, 2.1, 2.2, 2.4]) << newline
import from Integer, String;
bob(n: Integer): String
main:
main;