Часть 4. Язык функционально-логического программирования FLOGOL
.pdf4. ЯЗЫК ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ FLOGOL
CONSTRUCTOR (2) Cons ;
// Множества данных:
Data
DOMAIN
SET
Bool T F ,
Nat Null Nat Succ ,
String Empty String Ch ,
Atom Bool Nat String ,
Object Atom List ,
List Nil (Object # List) Cons
END;
// Примитивные функции. Все функции в системе Дж. Бэкуса имеют одну
// и ту же арность 1,1 за счет возможности компоновать многие
// данные в один список.
PrimFunc WITH Data
DOMAIN
// Функции-селекторы:
(I 1..) OPERATOR [I] Sel
{Cons(x,y) :IF I 1 THEN x ELSE [I 1] Sel(y) ? y List};
OPERATOR
// Выделение «хвоста» списка:
Tail {Cons (x, y)? y List},
//Арифметические функции (в качестве примеров приведены функции
//сложения, умножения и упорядоченной пары):
Add {Pair ( Null , y) : y ? y Nat}
{Pair (Succ (x),y) : Succ (Add(Pair ( x , y)))},
FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 41
4. ЯЗЫК ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ FLOGOL
Mlt {Pair ( Null, y): Null ? y Nat}
{Pair (Succ (x), y): Add ( Pair (Mlt (Pair (x , y)),y))} ,
OrdPair {Pair ( Null , Null ) : Null }
{Pair ( Null ,Succ ( y)) : Succ (Add (Pair (OrdPair ( Pair (Null , y)),y)))} {Pair (Succ ( x ) , y) : Succ (OrdPair (Pair (x,Succ( y))))},
// Проверка списка на пустоту:
NilList {Nil : T} {Cons (x, y) : F} ,
// Присоединение слева:
LeftCon {Pair (x, y) : Cons (x, y) ? y List } ,
// Присоединение справа:
RightCon {Pair (Nil , y) : Cons (y, Nil) }
{Pair (Cons ( hx , tx ), y) : Cons ( hx , RightCon ( Pair (tx, y))} ,
// Равенство объектов:
Equal {Pair (x, x) : T} {Pair (x, y) : F ? x y} ,
// Тождественная функция:
Ident C1 ,
// Логическое «И»:
And {Pair (T,T) : T}
{Pair (T, F) | Pair ( F, F) | Pair ( F,T) : F} ,
// Логическое «НЕТ»:
Not {Cons (T, Nil ) : F} {Cons ( F, Nil ) : T} ,
// Распределение слева:
DistL {Pair (x, Nil ) : Nil} {Pair (x,Cons ( hy, ty)):
Cons (Pair (x, hy),DistL ( Pair (x, ty)))},
// Распределение справа:
DistR {Pair ( Nil , y) : Nil} {Pair (Cons( hx, tx ), y) :
Cons ( Pair ( hx, y), DistR ( Pair ( tx , y)))},
FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 42
4.ЯЗЫК ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ FLOGOL
//Увеличение числа на единицу:
Inc D1 (~ Nat # Succ) ,
//Вариант: Inc {x : Succ(x)? x Nat}
//Уменьшение числа на единицу:
Dec ~ Succ
END;
//Функциональные формы :
Forms DOMAIN
//Композиция
( K ..)
OPERATOR
[ K ]Comp [OPERATOR «.. K -1» ] ( I .. K -1) « I » ,
//Конструкция:
[K]Constr [OPERATOR ;
( I 1..K -1)OPERATOR « I » « I -1» ]
IF K 0 THEN Nil ELSE {x : Cons ( «0» (x), [K -1]Constr [(I 1..K 1) « I » ](x))};
OPERATOR
// Условие:
Cond [OPERATOR ,,C1]
{x : «1» (x) ? « 0 » (x) T} {x : «2» (x) ? « 0 » (x) F} ,
// Функции-константы:
Const [OBJECT ] {x :« 0 »} ,
// «Применить-ко-всем»:
ApplyAll [OPERATOR ] {Nil : Nil}
{Cons (x, y) : Cons ( « 0 » (x),@(y))},
// Правая свертка:
FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 43
4. ЯЗЫК ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ FLOGOL
ScrR [OPERATOR ,OBJECT ] {Nil :«1 »} {Cons (x, Nil ) : x}
{Cons (x, y) :« 0 » (Pair (x,@(y)))? y Cons (hy,ty)} ,
// Левая свертка:
ScrL[OPERATOR ,OBJECT ] {Nil :«1 »} {Cons (x, Nil ) : x}
{x :« 0 » ( Pair (@( Head (x)), Last (x)))}
WHERE
OPERATOR
Head {Cons (x, Nil ) : Nil} {Cons (x, y) : Cons (x, Head (y))},
Last {Cons (x, Nil ) : x} {Cons (x, y) : Last (y)} )
END
WHERE
CONSTRUCTO R (2) Pair {x, y : Cons ( x ,Cons (y, Nil))}
END
FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 44
4. ЯЗЫК ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ FLOGOL
ЛИТЕРАТУРА
1.Кутепов В.П., Фальк В.Н. Направленные отношения: теория и приложения // Изв. РАН. Техническая кибернетика, 1994. №4,5.
2.Фальк В.Н. FLOGOL – входной язык системы функциональнологического программирования // Сб. науч. статей к НТК МИРЭА (ТУ).1998.
3.Фальк В.Н. Теория направленных отношений и ее приложения // Автореф. дисс. … докт. техн. наук. -М: МЭИ. -2001.-40 с.
4.Бебчик Ал.М., Бебчик Ан.М., Фальк В.Н. Система функциональнологического программирования S-FLOGOL // Труды IX-ой национальной конференции по искусственному интеллекту с международным участием КИИ-2004. Том.1. М.:Физматлит, 2004. –С. 210–217.
5.Бебчик Ал.М., Бебчик Ан.М., Фальк В.Н. Инструментальные средства разработки и отладки программ системы функционально-логического программирования S-FLOGOL // Труды IX-ой национальной конференции по искусственному интеллекту с международным участием КИИ2004. Том.1. М.:Физматлит, 2004. –С. 896–901.
FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 45
4. ЯЗЫК ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ FLOGOL
ОГЛАВЛЕНИЕ |
|
4. ЯЗЫК ФУНКЦИОНАЛЬНОЛОГИЧЕСКОГО |
|
ПРОГРАММИРОВАНИЯ FLOGOL ........................................................... |
1 |
4.1.ПАРАДИГМЫ ФУНКЦИОНАЛЬНОГО И ЛОГИЧЕСКОГО
ПРОГРАММИРОВАНИЯ. ................................................................................ 1
4.2.ОБЩИЕ ПРИНЦИПЫ ПОСТРОЕНИЯ ЯЗЫКА ФУНКЦИОНАЛЬНО-
ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ FLOGOL . |
........................................ 4 |
4.3. СИНТАКСИС ЯЗЫКА FLOGOL . ............................................................ |
20 |
AND.......................................................................................................... |
37 |
4.4. ПРИМЕРЫ ПРОГРАММ НА ЯЗЫКЕ FLOGOL. ...................................... |
38 |
ЛИТЕРАТУРА .............................................................................................. |
45 |
FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 46