Алдор
Эта статья нуждается в дополнительных цитатах для проверки . ( октябрь 2021 г. ) |
Парадигма | Мультипарадигмальность : объектно-ориентированная , функциональная , императивная , зависимо-типизированная , логическая. |
---|---|
Разработано | Ричард Димик Дженкс, Бэрри Трэгер, Стивен Уотт, Джеймс Дэвенпорт, Роберт Сьютор, Скотт Моррисон |
Разработчик | Исследовательский центр Томаса Дж. Уотсона |
Впервые появился | 1990 год |
Стабильная версия | 1.0.3
|
Предварительный выпуск | 1.1.0
|
Платформа | Система компьютерной алгебры Аксиома |
ТЫ | Линукс , Солярис , Винда |
Лицензия | Алдор Публичный 2.0, Апач 2.0 |
Расширения имен файлов | .увы |
Веб-сайт | Алдор |
Основные реализации | |
Система компьютерной алгебры Аксиома | |
Под влиянием | |
А# , Паскаль , Хаскель |
Алдор — язык программирования . [1] [2] [3] Это преемник A# в качестве языка расширения системы компьютерной алгебры Axiom .
Aldor сочетает в себе императивные, функциональные и объектно-ориентированные функции. Он имеет сложную систему типов, [4] позволяя использовать типы в качестве значений первого класса. Синтаксис Aldor находится под сильным влиянием Pascal , но он опционально чувствителен к отступам, использует пробельные символы и правило офсайда , как Python . В текущей реализации он компилируется, но предоставляется интерактивный прослушиватель.
Aldor распространяется как бесплатное программное обеспечение с открытым исходным кодом по лицензии Apache License 2.0.
Примеры
[ редактировать ]Программа Hello world выглядит так:
#include "aldor"
#include "aldorio"
stdout << "Hello, world!" << newline;
Пример зависимых типов (из Руководства пользователя):
#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
#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();
Ссылки
[ редактировать ]- ^ Гердт Владимир П.; Кепф, Вольфрам; Майр, Эрнст В.; Ворожцов, Евгений В. (7 сентября 2010 г.). Компьютерная алгебра в научных вычислениях: 12-й международный семинар, CASC 2010, Цахадзор, Армения, 6-12 сентября 2010 г., Труды . Спрингер. ISBN 978-3-642-15274-0 . Проверено 5 июля 2023 г.
- ^ Киршнер, Хелен; Рингайссен, Кристоф (30 декабря 2006 г.). Границы объединения систем: Третий международный семинар, FroCoS 2000, Нанси, Франция, 22-24 марта 2000 г., материалы . Спрингер. ISBN 978-3-540-46421-1 .
- ^ Кербер, Манфред; Кольхасе, Майкл (2 апреля 2001 г.). Символические вычисления и автоматизированные рассуждения: Симпозиум CALCULEMUS-2000 . ЦРК Пресс. ISBN 978-1-4398-6423-4 . Проверено 5 июля 2023 г.
- ^ «Язык программирования Алдор» . Aldor.org . Проверено 12 февраля 2017 г.
Внешние ссылки
[ редактировать ]- Официальный сайт
- Разработка с открытым исходным кодом — репозиторий Git
- Руководство пользователя Алдора