Je conteste la revendication dans l'article que vous êtes en train de lire. (Je ne suis pas payé pour cela, donc je vais fournir un argument suggestif, pas une preuve.)
Il est bien connu que, au moins sous la réduction d'ordre normal (alias appeler par son nom), le calcul lambda pur est Turing-complet. Mais si nous regardons l'article séminal de John Reynolds Definitional Interpreters for Higher-Order Programming Languages, nous pouvons voir que Reynolds discute longuement la différence entre appel par nom et appel par valeur. Une partie critique de l'argument est que, afin de faire une distinction appropriée, nous pouvons transformer un programme en continuation-passing style. La transformation CPS est différente pour l'appel par besoin et appel par valeur, mais les termes transformés résultants peuvent être évalués dans l'un ou l'autre style. Voici donc l'argument: écrire un programme lambda-calcul qui simule une machine de Turing, puis CPS le transforme en utilisant la transformée CBN, et vous pouvez évaluer le code résultant en utilisant une stratégie de réduction CBV. Coup! Turing-complet. En pratique, je parie que vous pouvez écrire un programme CBV pour émuler une machine de Turing; il suffit probablement de choisir un combinateur à virgule fixe approprié, par exemple Θ. (Plus célèbre Y Combinator ne fonctionne que lors d'un appel par nom stratégie de réduction, par exemple, la réduction d'ordre normal.)
Avertissement: Je n'ai pas étudié le calcul lambda dans les âges, et je suis sûr qu'il sont plusieurs détails erronés dans l'argument ci-dessus. Mais je suis confiant dans la substance. Ce ne serait pas la première fois que je repèrerais quelque chose de manifestement faux dans les ressources en ligne sur la théorie du langage de programmation.
Quel article? _ – kennytm
@KennyTM: J'essaie de trouver la source dans les références à la fin de l'article. Je peux vous donner un lien si vous le souhaitez mais c'est en russe. – Roman
Un article russe vaut mieux que rien. Pas moi, mais quelqu'un peut être capable de lire le russe. – kennytm