|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |
|
Invité de passage
![]() Inscription : avril 2007 Messages : 12 ![]() |
Bonjour à tous,
je veux implémenter le système F et je trouve des difficultés au niveau de la substitution des termes. Pour les quatre premiers cas de substitution (constante, variable, application et abstraction), il n y a aucun problème, mais je trouve des difficultés au niveau de l'application de type et l'abstraction de type. Dans ces deux derniers cas, on doit faire la substitution des termes et la substitution des types: Citation:
Est ce que c'est possible d'avoir des exemples de telle substitution? Le même problème avec l'abstraction de type? Merci d'avance. |
|
|
|
00
|
|
|
#2 |
|
Membre actif
![]() Valentin RobertÉtudiant Inscription : juin 2004 Messages : 70 ![]() |
Je ne suis pas sûr de comprendre ton problème. Disposes-tu d'un exemple de code ou pseudo-code dans un langage quelconque ?
Pour la substitution de termes dans les termes, tu fais comme dans le lambda-calcul simplement typé. Pour la substitution de types dans les termes, tu dois remplacer les occurences du type à substituer dans (λx:α.t), et tu dois t'arrêter quand tu croises une abstraction de types (Λα.t) qui cache ton α. Pour la substitution de types dans les types, tu fais "comme" dans le lambda-calcul simplement typé, mais à un niveau supérieur. (?) En l'absence d'éclaircissements sur ce qui te pose problème, je ne vais pas tenter de détailler plus.
__________________
Apprendre Haskell vous fera le plus grand bien ! |
|
00
|
|
|
#3 | ||||
|
Invité de passage
![]() Inscription : avril 2007 Messages : 12 ![]() |
Bonjour,
Merci pour votre réponse. Pour la substitution des types dans les types, il n y a aucun problème. Pour la substitution des termes dans les termes, j'ai un petit problème lors d'une application de type et lors d'une abstraction de type. Est ce qu'il suffit juste de faire la substitution des termes? sans prendre en considération les types? voici le code que j'ai en Prolog: Le cas d'une application de type: Code :
Code :
Pour la substitution des types dans les termes, je pense qu'on fait appel a cette substitution lors de la bêta-réduction? Est ce que c'est possible d'avoir plus de détails sur cette substitution? |
||||
|
|
00
|
|
|
#4 | ||
|
Membre actif
![]() Valentin RobertÉtudiant Inscription : juin 2004 Messages : 70 ![]() |
Citation:
--- Je ne comprends pas bien le code Prolog, les notations me sont trop obscures (pii, N, ... ?) --- Citation:
Si on souhaite quand même le faire, la substitution se fait simplement : Substituer le type β au type α : - (λx:α.t) devient (λx:β.t') où t' est la substitution dans t. - (λx:γ.t) devient (λx:γ.t') où t' est la substitution dans t. - (Λα.t) reste (Λα.t). - (Λγ.t) devient (Λγ.t') où t' est la substitution dans t. Et pour le reste on fait les substitutions récursives sans se poser de question. Je ne suis pas expert en la matière et je peux me tromper, mais c'est comme ça que je ferais naïvement.
__________________
Apprendre Haskell vous fera le plus grand bien ! |
||
|
00
|
Copyright © 2000-2013 - www.developpez.com