Можно ли выразить такие свойства, как использование памяти функцией, на языке с зависимой типизацией?

11

Предположим, что кто-то хочет рассуждать о свойствах кода помимо таких вещей, как целостность и функциональная чистота, а также заботится о потреблении памяти или алгоритмической сложности функции. Можно ли это сделать с помощью зависимых систем типирования и эффектов?

Доктор Джон Зойдберг
источник
2
В этом видео Брайан МакКенна приводит пример кодирования временной сложности в типы.
Антон Трунов

Ответы:

8

Да, оно может. Хотя с концептуальной точки зрения это не так уж и сложно, его не так много изучали. Одним из аспектов этой области является семантика затрат, такая как исследование, проведенное Гаем Блеллохом .

В ролике Антона упоминается работа Даниеллсона по анализу упрощенного полуформального времени для чисто функциональных структур данных . Это действительно использует монаду, чтобы нести стоимость за операцию. Подобная монада на семантическом уровне используется в семантике денотационной стоимости для функциональных языков с индуктивными типами . Вот статья 2016 года, которая делает нечто подобное в Coq, библиотеке Coq для внутренней проверки времени выполнения .

Сотрудники NuPRL также давно заинтересованы в таких вещах. В выражении вычислительной сложности в теории конструктивного типа , которая в основном сводится к расчету по структурированной операционной семантике. Немного интереснее то, что вы можете отразить семантику языка в языке. Пример в последнем разделе, раздел 12, Наивной теории вычислительных типов иллюстрирует и обсуждает подобные вещи.

Дерек Элкинс покинул ЮВ
источник