Nella mia ricerca di un pratico linguaggio di programmazione completo non-turing, ho prestato attenzione al lambda-calcolo con auto-applicazione non consentita - cioè, x x
vietato. Dopo aver preso quella lingua e aumentata con le liste e le operazioni foldl
e range
, praticamente qualsiasi algoritmo che ho provato finora è implementabile. È banale implementare filter
, reverse
, head
, tail
, map
, scanl
, zip
e molti altri - foldl sostituisce la necessità di ricorsione.
Riesci a pensare ad un algoritmo pratico e importante che sarebbe annullabile in quella lingua?
It is no coincidence that all of them use self-application—the application of an expression to itself. It is through self-application that repetitive computation can be simulated in the lambda calculus. Indeed, the third of the previous three examples is famous because it can encode recursive function definitions.
Da link .