Dado un lenguaje con una función de pliegue (ala Haskell) garantizada para terminar, ¿cuán necesario sería la integridad de Turing para que el resto de este lenguaje sea útil?

Depende de lo que necesites hacer.

Las personas escriben código en idiomas completos que no son turing todo el tiempo.

Podemos razonar acerca de los procesos que no terminan a través de la codata y corecursion.

Si todo lo que quiere hacer es doblar conjuntos de datos finitos, entonces un doblado puede ser todo lo que necesita.

Pero si desea generarlos, es posible que necesite alguna forma de núcleocursion productivo, así como una recursión bien fundada.

Sin embargo, los “pliegues como en Haskell” en particular son bestias muy poderosas. ¿Por qué? Tenemos infinitas listas allí. Con una estructura infinita para doblar, puede usar doblar para implementar la fix , que es suficiente para completar su lenguaje Turing.

Consulte “Obtención de una solución desde el pliegue correcto” de Bernie Pope en The Monad Reader, número 6, para ver una versión de esta construcción.

Una vez que tenga eso, puede hacer lo que quiera.