Помогите с проекциями футамуры разобраться) точнее с возможностью применения на практике..
допустим есть int - интерпретатор языка L, допустим сделанный на f#.
Тогда согласно 1й проекции
spec(int,p) = intp
Получается что специализатор spec также должен быть на f# и фактически уметь манипулировать f# ast и выдавать также программу на f# (прям генерить исходник на f#?), которая и будет специализацией интерпретатора int для программы p на языке L. Я все верно понял?
2. основная непонятка, допустим есть функция на f# reduce которая умеет по части входных данных редуцировать программу 'p' (которая передается в виде ast). Дак вот эта функция (как я понимаю) по сути является специализатором, ведь она "специализирует" входную программу p по частично известным данным. Верно? Если данные известны все, то программа (выражение - p) редуцируется до константы, то есть по сути специализатор является и интерпретатором!? И вот непонятно эта функция reduce както применима для 1й проекции? Вроде как по сути она и делает спец версию программы р (как раз то о чем 1я проекция футамуры), но где тут spec , int??