Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Аксіоми виводу типу комбінатора. 3. комбінаторні вирази (або терми);




Лекція 7

Лекція 6

 

· алфавіт;

· твердження;

· аксіоми;

· правила виводу.

 

 

1. константи;

2. змінні;

3. комбінаторні вирази (або терми);

4. спеціальні символи.

 

 

Константи c1, c2,...

Змінні x, y,...

Вирази (терми) M, N,...

Спеціальні символи "(", ")"

 

вираз (MN) є допустимим комбінаторним термом.

аксіоми відношення конвертованості:

(I) Ix = x; існування комбінатора (функції) тотожності

(K) Kxy = x; існування комбінатора (функції) взяття першої проекції

(S) Sxyz = xz(yz). комбінатор - конектор

 

правила виводу комбінаторних термів відношення конвертованості:

(μ) якщо a=b, то ca=cb;

(ν) якщо a=b, то ac=bc;

(ρ) a=a (рефлексивність);

(σ) якщо a=b, то b=a (симетричність);

(τ) якщо a=b і b=c, то a=c (транзитивність).

 

XY = (XY), XYZ = ((XY)Z),...

 

(XY) = XY, ((XY)Z) = XYZ,...

БНФ -опис комбінатора:

<комбінатор>::= K | S | (<комбінатор> <комбінатор>)

БНФ -опис терма комбінаторної логіки, можливо із змінними:

<комбінаторний терм>::= K | S | <змінна> |

(<комбінаторний терм> <комбінаторний терм>)

 

Деякі корисні співвідношення для комбінаторів

(I) I a = a; комбінатор тотожності
(K) К ab = a; канцелятор (комбінатор взяття першої проекції)
(S) S abc = ac(bc); комбінатор-конектор
(B) B abc = a(bc); комбінатор композиції
(C) C abc = acb; пермутація (перестановка)
(W) W xy = xyy. дублювання аргументів

 

механізм редукції

SKKx = (за правилом S) Kx(Kx) = (за правилом K) x.

звідки, з урахуванняи аксіом і правила (I),

I = SKK

 

Розкладання термів в базисі {K,S} для розглянутих вище комбінаторів:

 

B = S(KS)K; W = SS(K(SKK)); C = S(BBS)(KK).

 

тип a приписаний комбінатору X тоді і лише тоді, коли це твердження отримано з таких аксіом:

 

(FI) ||- #(I) = (a,a),

(FK) ||- #(K) = (a,(b,a)) = (a,b,a),

(FS) ||- #(S) = ((a,(b,c)), ((a, b)(a,c)))

 

і правила виводу

 

(F) если ||- #(X) = (a,b) и ||- #(U) = a,

то ||- #(XU) = b.

 

визначення функцій

 

fun Ix = x;

fun Kxy = x;

fun Sxyz = xz(yz);

 

 

T = {d: D|Ψ}

 

<S, A, R>

 

#M ||- T – приписування типу

 

 

Аксіома (I) Ix = x існування комбінатора (функції) тотожності
Аксіома (K) Kxy = x існування комбінатора (функції) взяття першої проекції
Аксіома (S) Sxyz = xz(yz) попарного зв'язування третього елементу с першими двома

 

(FI) ||- #(I) = (a,a), тип тотожності

(FK) ||- #(K) = (a,(b,a)) = (a,b,a), тип канцелятора

(FS) ||- #(S) = ((a,(b,c)), ((a, b)(a,c))) тип зв'язування (конектора)

 

 

(F) якщо ||- #(X) = (a,b) и ||- #(U) = a,

то ||- #(XU) = b.

 

базисні типи:

int - цілі числа;

string - рядки символів;

bool - логічні значення.

 

let

val Id = fn x => x

in (Id 3, Id true)

end

 

fn Id => (Id 3, Id true)) (fn x => x)

 

Приклад 1.

val x=2*3;

val x = 6: int

 

Приклад 2.

1+2;

3: int

 

Приклад 3.

fun add (x: int)(y: int) = x+y;

val add = fn: int -> int -> int

 

Приклад 4.

add 1 3;

val it = 4: int

 

Приклад 5.

val f = add 1;

val f = fn: int -> int

 

f 4;

val it = 5: int

 

Приклад 6.

hd [1,2,3];

val it = 1: int

тип (int list -> int).

 

Приклад 7.

hd [true, false, true, false];

val it = true: bool

тип bool list -> bool

 

Приклад 8.

hd [(1,2)(3,4),(5,6)];

val it = (1,2): int*int

тип ((int*int)list -> (int*int)).

 

Таблиця 7.1. Відображення типів мови програмування SML в типи ієрархії CTS

Тип Класс.NET Пояснение
  int System.Int32 Целое число
  string System.String Строка
  bool System.Boolean Логическое значение
... ... ... ...

 




Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 383; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.016 сек.