Quelqu'un peut-il m'indiquer la référence pour la non-définissabilité du module de continuité fonctionnelle en PCF? \ newcommand {\ bool} {\ mathsf {bool}}
Andrej Bauer a écrit un très bon article de blog explorant certains des problèmes plus en détail, mais je résumerai juste un peu de son article pour donner un peu de contexte à cette question. L'espace Baire est l'ensemble des séquences de nombres naturels, ou de manière équivalente l'ensemble des fonctions à partir de produits naturels à bécarres . Pour cette question, nous limiterons notre attention uniquement aux flux qui sont calculables.N → N
Maintenant, une fonction est continue si pour chaque , la valeur de ne dépend que d'un nombre fini des éléments de , et elle est continuellement calculable si nous pouvons réellement calculer une valeur supérieure lié au nombre d'éléments de nécessaires. Dans certains modèles de calcul, il est en fait possible d'écrire un programme qui prend une fonction calculable sur l'espace Baire et un élément de l'espace Baire, et redonne la limite supérieure du nombre d'éléments du flux.
Une astuce pour l'implémenter consiste à utiliser le stockage local pour enregistrer l'index maximum dans le flux vu:
let modulus f xs =
let r = ref 0 in
let ys = fun i -> (r := max i !r; xs i) in
f ys;
!r
Bien sûr, l' ys
argument n'est plus un programme purement fonctionnel. Mon intérêt pour ce programme vient du fait qu'il n'utilise que du magasin local, et est donc d'une extension pure. Je travaille (entre autres) sur la programmation impérative d'ordre supérieur et je conçois des théories de type qui pourraient classer cela comme une fonction pure.
Il y a aussi des exemples plus pratiques, impliquant des choses comme la mémorisation et la mise en commun des connexions, mais je trouve que c'est un très bel exemple.