КАТЕГОРИИ: Архитектура-(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) |
Синтаксис типу
Синтаксис опису Синтаксис виразу Синтаксис SML Синтаксис ламбда-числення БНФ Визначення синтаксису Застосування типізації Типізація в SML 1. Схема типізації: 1. базисні типи: int - цілі числа; string - рядки символів; bool - логічні значення.
2. a, b, то f(a)=b, має тип a à b
2. Виведення типів.
Сильна статична типізація
3. Поліморфна типізація
let val Id = fn x => x in (Id 3, Id true) end
некоректно:
fn Id => (Id 3, Id true) (fn x => x)
переваги типізації 1. Ієрархія типів виключає сегментацію типів 2. Полегшення управління предметною сферою
Приклад 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)).
Таблиця 6.1. Відображення типів мови програмування SML в типи ієрархії CTS
Означення 7.1. Синтаксис - розділ опису формальної математичної мови або мови програмування, що досліджує вид, форму і структуру конструкцій мови (без врахування їх значення або практичної застосовності). Схема трансляції програми 1. Лексичний аналіз 2. Синтаксичний розбір 3. Перетворення тексту програми в проміжний або машинний код 7.2. Порівняння синтаксису SML і ламбда-числення <вираз>::= <константа> | <змінна> | (<вираз> <вираз>) | λ <змінна>.<вираз> <вираз>::= <ідентифікатор> | <літерал> | <вираз> <вираз> | <вираз> <ідентифікатор> <вираз>
Синтаксично допустимими виразами мови SML, також є: if <вираз> then <вираз> else <вираз> | (<вираз>... <вираз>) | let <опис> in <вираз> end | (<вираз>)< опис >::= val < ідентифікатор > = < вираз > | fun < ідентифікатор > < ідентифікатор > = < вираз > | local < опис > in < опис > end
<тип>::= int | bool | <тип> *... * <тип> |<тип> -> <тип>
Приклад. Константа типу кортеж виду
(0,false,1,true)
має тип
(int*bool*int*bool). Синтаксичні особливості основних видів літералів <літерал>::= <літерал цілого типу> | <літерал рядкового типу> | <літерал дійсного типу>
M ´ 10E, де M - мантиса в діапазоні від -1 до +1, E - порядок.
Аплікація функцій <вираз> <вираз>
Приклад. fun succ n = n+1;
succ 2 Синтаксис умовних виразів if <вираз> then <вираз> else <вираз>;
Приклад. if n>=10 then 1 else 0;
Синтаксис let-виразів let <опис> in <вираз> end;
Приклад. let val n=2 in n+1 end;(λx.x + 1) 2 let k=9876*8765 in (k-1, k, k+1) end;
Дата добавления: 2014-01-07; Просмотров: 305; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |