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) разрабатываемой командой

  • Проработанный пользовательский интерфейс
  • Редактор с подсветкой синтаксиса и ошибок
  • Автоматизация запуска программ
  • Встроенный пошаговый отладчик

Темы исследований на 2011 год:

  1. Парсер
    1. Отложенный вызов лексера/парсера для снижения нагрузки
    2. Инкрементальный лексер
  2. Системы типов
    1. Статическая СТ с явными типовыми аннотациями
      Например, let x : int = 2+2 in x+1
    2. Полиморфные типы в СТ с явными типовыми аннотациями.
    3. Применение алгоритма унификации для реализации статической СТ без явных типовых аннотаций.
    4. Применение алгоритма унификации для реализации статической СТ без явных типовых аннотаций с полиморфными типами.
  3. Интерпретатор/отладчик
    1. Отладчик, реализованный в отдельном потоке
    2. Реализация пошагового отладчика для итеративного интерпретатора
    3. Отладчик с возможностью отката состояния
    4. Интеграция с внешним отладчиком (межпроцессовое взаимодействие)
  4. Использование AST в IDE
    1. Переименование связанных вхождений идентификатора
    2. Outline - 
    3. Свёртка кода - collapse/expand для структурный частей кода
    4. Autocompletion - автодополнение имени идентификатора
  5. Run-time libraries
    1. Система конфигурируемых системных библиотек
    2. Модульная поддержка в языке
Подстраницы (1): Примеры на языке StudentML
Comments