J'ai essayé d'enrouler ma tête autour du quoi, pourquoi et comment du -calculus mais je ne suis pas parvenu à comprendre "pourquoi ça marche"?
«Intuitivement», j'obtiens le modèle de calculabilité de Turing Machines (TM). Mais cette -abstraction me laisse juste perplexe.
Supposons que les MT n'existent pas - alors comment peut-on être convaincu "intuitivement" de la capacité de -calculus à saisir cette notion de calculabilité. Comment le fait d'avoir un tas de fonctions pour tout et leur composobilité implique-t-il la calculabilité? Qu'est-ce que j'oublie ici? J'ai lu le document d'Alonzo Church à ce sujet mais je suis toujours confus et je cherche une compréhension plus "fictive" de la même chose.
Réponses:
la source
Vous programmez dedans! Jetez un œil aux encodages d'église . Vous pouvez voir à quel point toute l'arithmétique peut être effectuée, ce qui devrait probablement vous convaincre qu'elle est extrêmement puissante. J'aime cependant regarder les opérations sur les listes. Vous pouvez définir la plupart des structures de données en fonction d'une fonction qui effectue l'opération la plus importante.
Par exemple, un encodage d'une liste est la fonction de pliage qui se replie sur elle. Notez que ce n'est pas le codage de Church mais celui que j'ai obtenu des types et des langages de programmation de Percie. Les codages de paires de Church ne nous donnent pas de récursivité, nous devons l'ajouter en nous-mêmes avec une sorte de combinateur de récursivité.
donc une liste prend deux arguments, une fonction pour faire le pliage, et une valeur initiale pour se connecter au pli à un moment donné.
maintenant nous pouvons définir une sommation avec une fonction d'ajout (voir les encodages d'église ci-dessus)
nous pouvons faire plus et définir une fonction de carte
si vous n'êtes toujours pas convaincu qu'il y a un calcul en cours ici et que vous voulez vous assurer que vous pouvez effectuer n'importe quel calcul, consultez le combinateur à virgule fixe . Cela me fait un peu mal à la tête de penser parfois, donc je ne suis pas sûr que je l'appellerais intuitif, mais si vous l'évaluez manuellement avec quelques arguments, vous pouvez voir ce qui se passe.
la source