StudentML
Язык
Язык
Выражения языка:
- Литералы
- Целочисленные
- Плавающая точка
- Булевские константы: 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
Библиотечные функции:
- println: 'a -> unit
Система типов:
- Динамическая типизация:
- int
- boolean
- float
- unit
- функции: a -> b (замыкание)
Минимальные требования к интегрированной среде разработки (ИСР, IDE) разрабатываемой командой
Минимальные требования к интегрированной среде разработки (ИСР, IDE) разрабатываемой командой
- Проработанный пользовательский интерфейс
- Редактор с подсветкой синтаксиса и ошибок
- Автоматизация запуска программ
- Встроенный пошаговый отладчик
Темы исследований на 2011 год:
Темы исследований на 2011 год:
- Парсер
- Отложенный вызов лексера/парсера для снижения нагрузки
- Инкрементальный лексер
- Системы типов
- Статическая СТ с явными типовыми аннотациями
- Например, let x : int = 2+2 in x+1
- Полиморфные типы в СТ с явными типовыми аннотациями.
- Применение алгоритма унификации для реализации статической СТ без явных типовых аннотаций.
- Применение алгоритма унификации для реализации статической СТ без явных типовых аннотаций с полиморфными типами.
- Интерпретатор/отладчик
- Отладчик, реализованный в отдельном потоке
- Реализация пошагового отладчика для итеративного интерпретатора
- Отладчик с возможностью отката состояния
- Интеграция с внешним отладчиком (межпроцессовое взаимодействие)
- Использование AST в IDE
- Переименование связанных вхождений идентификатора
- Outline -
- Свёртка кода - collapse/expand для структурный частей кода
- Autocompletion - автодополнение имени идентификатора
- Run-time libraries
- Система конфигурируемых системных библиотек
- Модульная поддержка в языке