Модельный язык программирования — исследование типизации: различия между версиями
Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
Juliet (обсуждение | вклад) |
Juliet (обсуждение | вклад) |
||
Строка 30: | Строка 30: | ||
ops<sub>2</sub>] | ops<sub>2</sub>] | ||
'''fi''' | '''fi''' | ||
== Цикл == | |||
Цикл с ''предусловием''. | |||
'''while''' <условие> '''do''' | |||
ops; | |||
'''done''' | |||
== Функции == | |||
Определение функции: | |||
Nat foo() '''def''' // функция без параметров | |||
... | |||
return 5; | |||
'''fed''' | |||
Nat foo(Nat x) '''def''' // функция с параметрами | |||
... | |||
return x + 7; | |||
'''fed''' | |||
void foo(...) '''def''' // процедура | |||
... | |||
return; | |||
'''fed''' | |||
'''''t_inf''''' foo(...) '''def''' | |||
... | |||
return true; | |||
'''fed''' | |||
Определение шаблона функции: | |||
T foo<T, S>(S->T f, S xx) '''def''' | |||
... | |||
'''fed''' | |||
Вызов функции: | |||
foo(x, y, ...); | |||
== Методы == | |||
x.p(); | |||
= Базовые типы = | |||
* Nat | |||
* Bool | |||
* Int | |||
* Double |
Версия от 08:38, 23 марта 2011
Модельный язык программирования с шаблонами, на примере которого изучается алгоритм типизации Хиндли-Милнера (Белякова Ю.).
Синтаксис
Присваивание
Nat x = 5; var x = 7.9; // автовыведение типа переменной y = x;
Выражения
expr (expr)
Арифметические:
a + b a - b a * b a / b a div b a mod b
Логические:
a || b a && b !a
Условный оператор
if <условие> then ops1 {elif <условиеi> then opsi} [else ops2] fi
Цикл
Цикл с предусловием.
while <условие> do ops; done
Функции
Определение функции:
Nat foo() def // функция без параметров ... return 5; fed Nat foo(Nat x) def // функция с параметрами ... return x + 7; fed void foo(...) def // процедура ... return; fed t_inf foo(...) def ... return true; fed
Определение шаблона функции:
T foo<T, S>(S->T f, S xx) def ... fed
Вызов функции:
foo(x, y, ...);
Методы
x.p();
Базовые типы
- Nat
- Bool
- Int
- Double