Добрый вечер. Не подскажете, случаем никто не видел работ по эффективной имплементации (или просто задании операционной семантики, не в смысле построения компилятора и.т.д) для простых систем с полиморфными функциями, и полиморфными в смысле просто обобщённым по типам, что-то вроде System F? Просто наивная/прямолинейная реализация будет либо хранить информацию о типах в райнтайме, либо каждый раз перекомпилировать тело функции для одного и того же типа и дублицировать его. Нормальное решение я подразумеваю будет запоминать для каких типов мы уже скомпилировали тело и просто подставлять эту функцию в вызов во время компиляции (не тело функции, а допустим её имя и в особый контекст запихивать её скомпилированное тело), а в рантайме будет уже обычный, как ни в чем не бывало, вызов. Что-то вроде шаблонов C++, только с тайп-чеком заранее.
Интересует именно спецификация такого в правилах вывода и операционной семантики, конечно же, а не реализация этого в компиляторах.