Оглавление
- 1 Система подструктурного типа
- 1.1 Безопасность типов и системы подструктурных типов
- 1.2 Системы упорядоченных типов
- 1.3 Системы линейных типов
- 1.4 Системы аффинных типов
- 1.5 Соответствующие системы типов
- 1.6 Интерпретация ресурсов
- 1.7 Типы, зависящие от ресурсов
- 1.8 Обычные типы ресурсов
- 1.9 Языки программирования с поддержкой линейных и аффинных типов
- 2 Система субструктурных типов — Википедия
Система подструктурного типа
-
Безопасность типов и системы подструктурных типов
- Системы подструктурных типов ограничивают доступ к ресурсам, отслеживая изменения состояния.
- Существуют различные системы подструктурных типов, включая упорядоченные, линейные, аффинные и соответствующие типы.
-
Системы упорядоченных типов
- Упорядоченные типы соответствуют логике без обмена, сжатия и ослабления.
- Используются для моделирования распределения памяти на основе стека.
-
Системы линейных типов
- Линейные типы гарантируют использование переменной ровно один раз.
- Применяются для безопасного освобождения ресурсов и разработки программных интерфейсов.
- В языке программирования Clean поддерживают параллелизм, ввод-вывод и обновление массивов на месте.
-
Системы аффинных типов
- Аффинные типы позволяют отбрасывать ресурс, соответствующий аффинной логике.
- Аффинный ресурс может использоваться не более одного раза.
-
Соответствующие системы типов
- Соответствующие типы допускают обмен и сокращение, но не ослабление.
- Каждая переменная используется по крайней мере один раз.
-
Интерпретация ресурсов
- Системы подструктурных типов предлагают интерпретацию ресурсов для управления ресурсами языка.
- Управление ресурсами связано с обеспечением освобождения ресурса ровно один раз.
-
Типы, зависящие от ресурсов
- Аффинные типы могут выражать шаблон typestate, где типы ресурсов определяют порядок вызовов функций.
- Линейные типы требуют перемещения ресурсов и должны быть перемещены, что делает деструкторы обычными функциями.
-
Обычные типы ресурсов
- Обычные типы ресурсов не ограничивают количество перемещений переменной.
- C++ относится к этой категории с семантикой неразрушающего перемещения.
-
Языки программирования с поддержкой линейных и аффинных типов
- Упомянуты некоторые языки программирования, поддерживающие линейные или аффинные типы, включая Clean, Idris, Rust и Swift.
Полный текст статьи: