Szukam prostego rachunku, który obsługuje rozumowanie na temat refleksji , a mianowicie introspekcji i manipulacji uruchomionymi programami.
Czy istnieje nietypowe rozszerzenie -calculus, które umożliwia konwersję -terms do postaci, którą można manipulować składniowo, a następnie oceniać?λ
Wyobrażam sobie, że rachunek składa się z dwóch głównych dodatkowych terminów:
- : przyjmuje i tworzy reprezentację podlegającą modyfikacjom w manipulacji składniowej.v
- : przyjmuje składniową reprezentację terminu i ocenia go.
Aby wesprzeć refleksję, wymagana jest składniowa reprezentacja terminów. Wyglądałoby to tak:
- ( L A M R ( e ) ) R ( e ) e byłby reprezentowany jako termin , gdzie jest odzwierciedloną wersją ,
- byłoby reprezentowane jako termin , a
- byłoby reprezentowane jako .
Dzięki tej reprezentacji dopasowanie wzorców może być użyte do manipulowania terminami.
Ale mamy problem. i muszą być zakodowane jako terminy, podobnie jak dopasowanie wzorca. Radzenie sobie z tym wydaje się proste, dodając , i , ale czy będę musiał dodać inne warunki, aby wesprzeć ich manipulację?e v a l R E F L E C T E V A L M A T C H
Należy dokonać wyboru projektu. Do czego powyższa funkcja powinna z i ? Czy przekształca ciało, czy nie?r e f l e c t e v a l R ( - )
Ponieważ nie jestem tak bardzo zainteresowany badaniem samego odbicia - rachunek różniłby się jako narzędzie do innych badań - nie chcę wymyślać koła na nowo.
Czy są jakieś kalkulatory, które pasują do tego, co właśnie opisałem?
O ile mogę stwierdzić, kalkulacje takie jak MetaML, zasugerowane w komentarzu, idą daleko, ale nie obejmują zdolności do dopasowywania wzorców i dekonstruowania fragmentów kodu, które zostały już zbudowane.
Jedno, co chciałbym móc zrobić, to:
Następnie wykonaj dopasowanie wzorca dla wyniku, aby zbudować zupełnie inne wyrażenie.
Z pewnością nie jest to konserwatywne rozszerzenie rachunku -kalkultu, a meta-teoria prawdopodobnie będzie brzydka, ale taki jest sens mojej aplikacji. Chcę rozbić -abstrakcje na części.λ