<div style="float:right;margin:1em;">{{ОФП Содержание}} </div>▼
__TOC__
Для конструирования функций используются различныеразные формализмы, одним изсреди которых является синтаксически-ориентированное конструирование. Чтобы применять последнюю методикуего, можно воспользоваться методом, который в свое время предложилпредложенным ХоарХоаром. Ниже приводится описание метаязыка, используемого для определения структур данных (в абстрактном синтаксисе):
Ниже приводится описание метаязыка, используемого для определения структур данных (в абстрактном синтаксисе):
===Декартово произведение===
1. Декартово произведение: Если C1<math>C_1, ..., CnC_n</math> — этосуть типы, а <math>C</math> — это тип, состоящий из множества <math>n</math>-ок вида <c1, ..., cn>, ci Ci, i = 1,n, то говорится, что C — декартово произведение типов C1, ..., Cn и обозначается как C = C1 ... Cn. При этом предполагается, что определены селекторы s1, ..., sn для типа C, что записывается как s1, ..., sn = selectors C.
Таким же образом записывается конструктор g: g = constructor C. Конструктор — это функция, имеющая тип (С1 ... (Cn C) ... ), т.е. для ci Ci, i = 1,n : g c1 ... cn = <c1, ..., cn>.
si (constructor C c1 ... cn) = ci
===Размеченное объединение===
2.Размеченное объединение: Если C1, ..., Cn — это типы, а C — это тип, состоящий из объединения типов C1, ..., Cn, при условии выполнения «размеченности», то C называется размеченным объединением типов C1, ..., Cn. Обозначается этот факт как C = C1 + ... + Cn. Условие размеченности обозначает, что если из C взять какой-нибудь элемент ci, то однозначно определяется тип этого элемента Ci. Размеченность можно определить при помощи предикатов P1, ..., Pn таких, что:
(x C) & (x Ci) (Pi x = 1) & (j i : Pj x = 0)
|