350 руб
Журнал «Информационно-измерительные и управляющие системы» №5 за 2025 г.
Статья в номере:
Система типов для статически типизированного функционального конкатенативного стекового языка программирования с поддержкой функций первого класса
Тип статьи: научная статья
DOI: https://doi.org/10.18127/j20700814-202505-02
УДК: 004.432.42
Авторы:

А.М. Диникеев¹

¹Университет Иннополис (г. Иннополис, Россия)

¹a.dinikeev@innopolis.university

Аннотация:

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

Цель. Разработать простую в реализации систему типов для статически типизированного конкатенативного языка программирования с поддержкой функций первого класса, не требующую ранг-n полиморфизма.

Результаты. Предложен подход к добавлению функций первого класса в систему типов за счет обязательных аннотаций типов операторов, правил расширения типов операторов и использования дополнительных параметров в операторах вызова и композиции функций первого класса. Описаны формализованные правила вывода типов. Приведены примеры выведения типов и проведено сравнение различных методов добавления поддержки функций первого класса в систему типов.

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

Страницы: 15-25
Для цитирования

Диникеев А.М. Система типов для статически типизированного функционального конкатенативного стекового языка программирования с поддержкой функций первого класса // Информационно-измерительные и управляющие системы. 2025. Т. 23. № 5. С. 15−25. DOI: https://doi.org/10.18127/j20700814-202505-02

Список источников
  1. Moore C.H. FORTH: a new way to program a mini computer // Astronomy and Astrophysics Supplement. 1974. V. 15. P. 497.
  2. Pestov S., Ehrenberg D., Groff J. Factor: a dynamic stack-based programming language // SIGPLAN Not. 2010. V. 45. № 12. P. 43−58. DOI: 10.1145/1899661.1869637.
  3. Von Thun M., Thomas R.Joy: Forth's functional cousin // Proceedings of the 17th EuroForth Conference. 2001.
  4. Diggins C. Type Inference for Polymorphic Types. https://github.com/cdiggins/type-inference.
  5. Rather E.D., Colburn D.R., Moore C.H. The evolution of Forth // Association for Computing Machinery. New York. NY. USA. 1996. P. 625−670. DOI: 10.1145/234286.1057832.
  6. Harris H.M. Forth as the basis for an integrated operations environment for a space shuttle scientific experiment // J. FORTH Appl. Res. 1986. V. 3. № 2. P. 23−36.
  7. Lindholm T., Yellin F., Bracha G., Buckley A., The Java Virtual Machine Specification. https://docs.oracle.com/javase/specs/jvms/se8/html/.
  8. Python Software Foundation. Disassembler for Python bytecode. https://docs.python.org/3/library/dis.html.
  9. Milner R., Tofte M., Harper R., MacQueen D. The definition of standard ML: revised. MIT press. 1997.
  10. WebAssembly Community Group. WebAssembly specification. https://webassembly.github.io/spec/core/.
  11. Freeman T. Pfenning F. Refinement types for ML // Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation. 1991. P. 268−277.
Дата поступления: 18.08.2025
Одобрена после рецензирования: 01.09.2025
Принята к публикации: 22.09.2025