РЕФАЛ
Материал из Википедии — свободной энциклопедии
Семантика: | функциональный |
---|---|
Тип исполнения: | зависит от реализации |
Появился в: | 1966 г. |
Автор(ы): | Валентин Турчин |
Типизация данных: | бестиповый |
Основные реализации: | |
Диалекты: | РЕФАЛ-2, РЕФАЛ-5, РЕФАЛ+ |
Создан под влиянием: | не известно |
Оказал влияние на: | нет или не известно |
РЕФАЛ (РЕкурсивных Функций АЛгоритмический) — один из старейших функциональных языков программирования. ориентированный на так называемые «символьные преобразования»: обработку символьных строк (например, алгебраические выкладки); перевод с одного языка (искусственного или естественного) на другой; решение проблем, связанных с искусственным интеллектом. Соединяет в себе математическую простоту с практической ориентацией на написание больших и сложных программ.
Отличительной чертой языка является использование сопоставления с образцом как основного способа определения функций.
[править] История
Первая версия РЕФАЛа была создана в 1966 году Валентином Турчиным в качестве метаязыка для описания семантики других языков. Впоследствии, в результате появления достаточно эффективных реализаций на ЭВМ, он стал находить практическое использование в качестве языка программирования.
В настоящее время основными диалектами языка являются РЕФАЛ-2 (1970-е), РЕФАЛ-5 (1985) и РЕФАЛ+ (1990), отличающиеся друг от друга деталями синтаксиса и набором «дополнительных средств», расширяющих первоначальный вариант.
[править] Примеры программ
Следующая программа на диалекте РЕФАЛ-5 обращает и печатает подаваемую на вход строку данных:
$ENTRY Go { = <Prout <Pal <Card>>>; } Pal { (e.1) = e.1; (e.1) s.2 e.3 = <Pal (s.2 e.1) e.3>; e.1 = <Pal () e.1>; }
Следующая программа на диалекте РЕФАЛ-5 получает на входе строку данных, представляющую собой десятичное представление некоторого натурального числа N, после чего вычисляет и печатает число Фибоначчи с номером N:
$ENTRY Go { = <Prout <Symb <FN <Numb <Card>>>>; } FN { 0 (s.1 s.2) = s.1; s.1 (s.2 s.3) = <FN <Sub s.1 1> (s.3 <Add s.2 s.3>)>; s.1 = <FN s.1 (0 1)>; }
[править] Ссылки
- http://www.refal.ru/ — Cодружество «РЕФАЛ/Суперкомпиляция»
Используемые в разработке: ABAP/4 | Ада | Ассемблеры | Awk | BASIC | Си | COBOL | C++ | C# | ColdFusion | D | Delphi | Forth | FoxPro | DataFlex | Фортран | Java | JavaScript | J++ | J# | Icon | Limbo | Лисп | Lua | Objective-C | Оберон | Oz | Паскаль | Perl | PHP | PL/I | Пролог | Руби | Python | Tcl | Smalltalk | SQL | Visual DataFlex | Visual Basic | VB.NET
|