Je recherche un calcul simple qui prend en charge le raisonnement sur la réflexion , à savoir l'introspection et la manipulation des programmes en cours d'exécution.
Existe-t-il une extension -calculus non typée qui permet de convertir termes en une forme qui peut être manipulée syntaxiquement puis évaluée par la suite?λ
J'imagine que le calcul a deux termes supplémentaires principaux:
- v v : prend et produit une représentation de modifiable en manipulation syntaxique.
- : prend une représentation syntaxique d'un terme et l'évalue.
Afin de soutenir la réflexion, une représentation syntaxique des termes est requise. Cela ressemblerait à quelque chose comme:
- ( L A M R ( e ) ) R ( e ) e serait représenté comme un terme , où est la version reflétée de ,
- ( A P P R ( e ) R ( e ′ ) ) serait représenté par le terme , et
- ( V A R x ) serait représenté par .
Avec cette représentation, la correspondance de motifs pourrait être utilisée pour manipuler des termes.
Mais nous rencontrons un problème. et doivent être codés en termes, tout comme la correspondance de motifs. Traiter cela semble être simple, en ajoutant , et , mais aurai-je besoin d'ajouter d'autres termes pour prendre en charge leur manipulation?e v a l R E F L E C T E V A L M A T C H
Il y a des choix de conception à faire. Que doit faire la fonction mentionnée ci-dessus avec le corps de et ? Est-ce que devrait transformer le corps ou non?r e f l e c t e v a l R ( - )
Comme je ne suis pas tellement intéressé par l'étude de la réflexion elle-même - le calcul servirait de véhicule à d'autres recherches - je ne veux pas réinventer la roue.
Existe-t-il des calculs qui correspondent à ce que je viens de décrire?
Pour autant que je sache, des calculs tels que MetaML, suggérés dans un commentaire, vont très loin, mais ils n'incluent pas la possibilité de filtrer et de déconstruire des fragments de code qui ont déjà été construits.
Une chose que j'aimerais pouvoir faire est la suivante:
Ensuite, effectuez une correspondance de modèle sur le résultat pour créer une expression complètement différente.
Ce n'est certainement pas une extension conservatrice du -calculus et la méta-théorie est susceptible d'être laide, mais c'est un peu le point pour mon application. Je veux séparer -abstractions.λ