J'ai ce que j'appellerais une question philosophique sur le λ-calcul.
Lorsque vous explorez le λ-calcul, vous serez surpris de voir toutes les choses que vous pouvez y faire. Vous pouvez définir des nombres entiers, des opérations arithmétiques, des booléens, des instructions if-then-else, des boucles, des fonctions récursives, etc. Je crois que cela a été prouvé computationnellement complet.
Mais d'un autre côté, si vous considérez ce que vous pouvez faire avec les fonctions en λ-calcul, vous vous rendez compte que la seule chose que vous pouvez faire est de lui donner une fonction et elle renvoie une autre fonction. Et ce processus ne se termine jamais.
Alors, comment pouvez-vous extraire un résultat d'un calcul?
Supposons que le résultat d'une expression soit fonction f
. Vous voulez vérifier si f
c'est ce que vous attendiez. Vous pouvez le tester, prendre une fonction que vous connaissez, lui appliquer f
et recevoir g
. Mais pour vérifier que g
c'est correct, vous devez maintenant vérifier ce qui g
fonctionne. Et vous recommencez. Alors, comment pouvez-vous en parler f
?
Il me semble que vous pouvez remplacer toutes les fonctions du λ-calcul par une seule fonction, la fonction d'identité I = λx.x
, et tout fonctionne toujours comme décrit dans le λ-calcul. Le chiffre de l'Église une 3
fois donné f
et x
revient f(f(f(x)))
. Mais depuis f
et x
ne peut être I
, il revient I
. I
appliqué I
et I
retourne également I
. I
Satisfait donc la définition de 3
. Les « booléens » (λxy.x)
et ont (λxy.y)
besoin de 2 arguments qui seront I
et I
si les deux booléens retourneront I
. Chacun est équivalent à l'identité, même s'ils se comportent exactement selon leurs définitions.
Alors, comment faites-vous la différence? Comment montrez-vous que le λ-calcul traite bien plus qu'une seule fonction?
Existe-t-il un concept d'identité? Pouvez-vous identifier une fonction immédiatement sans l'évaluer? Je crois qu'il a été prouvé qu'il n'y a aucun moyen de tester 2 fonctions pour l'égalité.
Ou le λ-calcul n'est-il pas une question de fonctions, mais une description formelle de ce qu'elles font? Cela signifierait que les expressions λ non seulement définissent ce que font les fonctions mais sont également les données que les fonctions manipulent. Ainsi, lorsque vous écrivez A B
, vous ne vous appliquez pas A
à B
, mais vous appliquez la fonction décrite par la chaîne A
à la définition formelle d'une fonction contenue dans le B
renvoi d'une autre définition formelle.
Que se passe-t-il réellement dans le λ-calcul? De quels objets mathématiques s'agit-il?
Suivre:
OK, d'après la réponse ci-dessous, il semble que le λ-calcul ne concerne pas tant les fonctions au sens mathématique, mais le sous-ensemble de fonctions qui peuvent être exprimées sous forme d'expressions λ. Ou encore plus sur la manipulation des expressions λ.