Предположим, что кто-то хочет рассуждать о свойствах кода помимо таких вещей, как целостность и функциональная чистота, а также заботится о потреблении памяти или алгоритмической сложности функции. Можно ли это сделать с помощью зависимых систем типирования и эффектов?
type-theory
functional-programming
dependent-types
inductive-datatypes
Доктор Джон Зойдберг
источник
источник
Ответы:
Да, оно может. Хотя с концептуальной точки зрения это не так уж и сложно, его не так много изучали. Одним из аспектов этой области является семантика затрат, такая как исследование, проведенное Гаем Блеллохом .
В ролике Антона упоминается работа Даниеллсона по анализу упрощенного полуформального времени для чисто функциональных структур данных . Это действительно использует монаду, чтобы нести стоимость за операцию. Подобная монада на семантическом уровне используется в семантике денотационной стоимости для функциональных языков с индуктивными типами . Вот статья 2016 года, которая делает нечто подобное в Coq, библиотеке Coq для внутренней проверки времени выполнения .
Сотрудники NuPRL также давно заинтересованы в таких вещах. В выражении вычислительной сложности в теории конструктивного типа , которая в основном сводится к расчету по структурированной операционной семантике. Немного интереснее то, что вы можете отразить семантику языка в языке. Пример в последнем разделе, раздел 12, Наивной теории вычислительных типов иллюстрирует и обсуждает подобные вещи.
источник