Pourquoi les lambda-abstractions les seules conditions qui sont des valeurs dans le calcul typées lambda?

cs.stackexchange https://cs.stackexchange.com/questions/1662

  •  16-10-2019
  •  | 
  •  

Question

Je suis confus au sujet de la demande suivante:. « Les seules valeurs dans le calcul typées lambda sont des abstractions lambda- »

Pourquoi les autres termes non valeurs? Qu'est-ce que cela signifie pour un lambda-abstraction pour être une valeur? La première chose qui vient à mon esprit était que peut-être des abstractions lambda sont les seuls possibles formes normales, mais ce n'est pas vrai, bien sûr, par exemple $ (\ Lambda x \;. X) \;. Y \ y $ à

Quelqu'un peut-il me éclairer?

Était-ce utile?

La solution

Il y a un certain nombre de choses qui se passent ici:

  • La langue que vous parlez n'a pas à propos des types de données supplémentaires, sinon il y aurait d'autres types de valeurs.
  • La stratégie de réduction de la langue ne réduit pas à l'intérieur des abstractions lambda. Les deux appels par valeur et appel par nom conforme à ce sujet. Dans le cas contraire, pas toute abstraction lambda serait normal.
  • On considère généralement que les programmes expressions fermées, donc il n'y a pas de variables libres, donc l'exemple que vous présentez ne sont pas considérés.

D'autres termes sont des valeurs non parce qu'ils peuvent être réduits ou ils ne figurent pas dans les programmes fermés.

Qu'une abstraction lambda est un moyen de valeur qu'il ne peut pas être réduite plus loin (en fonction de la stratégie de réduction).

Pour connaître les conditions ouvertes, les variables sont aussi des valeurs.

Licencié sous: CC-BY-SA avec attribution
Non affilié à cs.stackexchange
scroll top