пятница, 5 ноября 2010 г.

Построение результата, предложения и функции

Построение результата

Теперь рассмотрим второй фундаментальный механизм — подстановку значений в результатное выражение или короче построение результата. Но для начала введём пару определений.

Активным выражением называется объектное выражение, пополненное особыми термами — скобками вызова функции (синонимы: скобки активации, скобки конкретизации). Скобки активации имеют следующий вид:

<ИмяФункции активное-выражение>
В отличие от записи, традиционно принятой в математике и во многих языках программирования, в Рефале имя функции ставится не перед скобкой: f(x), а после неё: <F x>.

понедельник, 1 ноября 2010 г.

Сопоставление с образцом

Язык предоставляет два механизма, позволяющих работать с объектными выражениями: это сопоставление с образцом и подстановка значений в результаное выражение. Рассмотрим подробнее первый механизм.

Образцовое выражение (образец, pattern) представляет собой запись выражения, которое, в отличие от объектного выражения, может содержать переменные — неизвестные части. Если вместо переменных в образцовое выражение подставить конкретные значения, то получится объектное выражение.

суббота, 23 октября 2010 г.

Типы данных, объектные выражения

Программа на Рефале представляет собой функции, сгруппированных в модули. Функции являются одноаргументными, аргументы и результаты функций представляют собой иерархические структуры, называемые объектными выражениями. Объектное выражение представляет собой последовательность объектных термов (далее мы увидим, что существуют и другие виды термов), каждый из которых может быть или неделимым (атомом), или содержать в себе другое объектное выражение (назовём его составным термом).

TEMP Базисный Рефал

Эта статья в дальнейшем будет переработана и удалена. Пожалуйста, не сохраняйте ссылок на неё.

Приложение "Описание подмножества базисного Рефала"

Краткое описание подмножества

Данные, которые обрабатывает Рефал

Основной обрабатываемой структурой данных является объектное выражение. Объектное выражение — это структура данных, представляющая собой последовательность переменной длины (возможно пустую) объектных термов. Объектный терм может представлять собой либо атом — неделимую средствами языка Рефал (без учёта встроенных библиотечных функций) сущность, например, число, символ, имя (идентификатор) или что-либо другое (состав атомов в разных диалектах различается), либо т.н. скобочный терм — терм, содержащий внутри себя другое объектное выражение. Рассмотрим подробнее разные виды термов.

TEMP Идиомы

Эта статья в дальнейшем будет переработана и удалена. Пожалуйста, не сохраняйте ссылок на неё.

Идиомы программирования на Рефале

Понятие идиомы в языке программирования


Есть ли в Си++ цикл со счётчиком? А цикл foreach? Если смотреть узко, то нет. Строго говоря, в Си++, как и в Си, только три цикла (конструкции, порождаемые условными инструкциями и goto, рассматривать не будем), а именно while, for и do-while. Первые два из них являются циклами с предусловием, последний — с постусловием. Такая конструкция, как цикл со счётчиком, в синтаксисе отсутствует, в отличие, скажем, от Паскаля и Бейсика. Однако один из циклов с предусловием обладает одним интересным свойством: цикл for позволяет помимо самого условия задавать инициализатор и "модификатор" каждой итерации:

for( инициализатор ; условие ; модификатор )
    тело_цикла

среда, 20 октября 2010 г.

Hello, Word на Модульном Рефале

По традиции начнём изложение языка с написания простейшей программы на этом языке. Для этого создадим текстовый файл с именем Hello.mref (расширение файлов исходного текста Модульного Рефала — .mref) со следующим содержанием:

$PROGRAM Hello;

/*
  Эта программа выводит на экран строку Hello, World!
*/

$IMPORT MInOut;

$ENTRY Go {
  // Вывод строки на экран
  = <MInOut::WriteLine 'Hello, World!'>;
}

$END Hello.

вторник, 19 октября 2010 г.

Введение

Язык Рефал (а точнее, целое семейство диалектов) — это функциональный язык программирования, ориентированный на так называемые символьные вычисления: произведение алгебраических выкладок, автоматическое доказательство теорем, обработка искусственных и естественных языков, в частности написание трансляторов, решение задач методами искусственного интеллекта и много чего другого (обо всём этом можно прочесть во введении к любому руководству по языку Рефал, например, здесь, поэтому не буду повторяться).