Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Часть 4. Язык функционально-логического программирования FLOGOL

.pdf
Скачиваний:
21
Добавлен:
28.06.2014
Размер:
971.45 Кб
Скачать

4. ЯЗЫК ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ 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