ЯзыкВыражения языка: - Литералы
- Целочисленные
- Плавающая точка
- Булевские константы: true, false
- Константа типа unit: ()
- ? Строковые
- Арифметические выражения
- + - * /
- Возможен отдельный набор набор операций для чисел с плавающей точкой, например: +. -. *. /.
- Скобки: круглые "(...)" и "begin ... end"
- Идентификаторы
- Конструкция let: 'let <id>=<expr> in <expr>' для связывания идентификатора со значением и определения области видимости
Например: let x = 2*2 in 3 * (let y = 1 in y+x) - Анонимные функции
Например: (fun x -> x+1) - Вызов функции
Например: (fun x -> x+1) 5 или (f 5) - Рекурсивные функции: let rec f = expr1 in expr2, при условии, что expr1 вычисляется к функциональному значению
Например: let rec fact = fun n -> if n > 0 then n * fact (n-1) else 1 in fact 5 - Последовательность выражений: expr1; epxr2
- Логические выражения:
- Логические операции: || && !
- Сравнение: = <> > < >= <=
- Условный оператор: if expr then expr1 else expr2
- ? допускается форма "if expr then expr1" при условии, что expr1 возвращает тип unit
Библиотечные функции: Система типов: - Динамическая типизация:
- int
- boolean
- float
- unit
- функции: a -> b (замыкание)
Минимальные требования к интегрированной среде разработки (ИСР, IDE) разрабатываемой командой- Проработанный пользовательский интерфейс
- Редактор с подсветкой синтаксиса и ошибок
- Автоматизация запуска программ
- Встроенный пошаговый отладчик
Темы исследований на 2011 год:- Парсер
- Отложенный вызов лексера/парсера для снижения нагрузки
- Инкрементальный лексер
- Системы типов
- Статическая СТ с явными типовыми аннотациями
Например, let x : int = 2+2 in x+1 - Полиморфные типы в СТ с явными типовыми аннотациями.
- Применение алгоритма унификации для реализации статической СТ без явных типовых аннотаций.
- Применение алгоритма унификации для реализации статической СТ без явных типовых аннотаций с полиморфными типами.
- Интерпретатор/отладчик
- Отладчик, реализованный в отдельном потоке
- Реализация пошагового отладчика для итеративного интерпретатора
- Отладчик с возможностью отката состояния
- Интеграция с внешним отладчиком (межпроцессовое взаимодействие)
- Использование AST в IDE
- Переименование связанных вхождений идентификатора
- Outline -
- Свёртка кода - collapse/expand для структурный частей кода
- Autocompletion - автодополнение имени идентификатора
- Run-time libraries
- Система конфигурируемых системных библиотек
- Модульная поддержка в языке
|
|