Birisi beni PCF'de işlevsel süreklilik modülünün tanımlanamaması için referans gösterebilir mi? \ newcommand {\ bool} {\ mathsf {bool}}
Andrej Bauer, bazı sorunları daha ayrıntılı bir şekilde araştıran çok güzel bir blog yazısı yazdı , ancak bu soruya bir bağlam kazandırmak için yazısının sadece bir kısmını özetleyeceğim. Baire alanı , doğal sayı dizileri kümesidir veya doğal olarak doğallardan \ N \ ila \ N'ye kadar işlevler kümesidir . Bu soru için dikkatimizi yalnızca hesaplanabilir akışlarla sınırlayacağız.
Şimdi, bir işlev her için ise süreklidir , değeri unsurlarının yalnızca sınırlı sayıda bağlıdır ve biz aslında bir üst hesaplayabilir eğer computably sürekli var birçok unsurlar nasıl bağlı ihtiyaç vardır. Bazı hesaplama modellerinde , Baire uzayında ve Baire uzayının bir elemanında hesaplanabilir bir fonksiyon alan bir bir program yazmak mümkündür. ve akışın eleman sayısı üst sınırını geri verir. x s ∈ B f ( x s ) x s x s m o d u l u s : ( B → b o o l ) → B → N
Bunu uygulamanın bir yolu, maksimum dizini görülen akışa kaydetmek için yerel depolamayı kullanmaktır:
let modulus f xs =
let r = ref 0 in
let ys = fun i -> (r := max i !r; xs i) in
f ys;
!r
Tabii ki, ys
argüman artık tamamen işlevsel bir program değil. Bu programda ilgim yalnızca yerel mağazanın kullanır ve bu nedenle olmasından gelmektedir extensionally saf. (Diğer şeylerin yanı sıra) üst düzey zorunlu programlama üzerinde çalışıyorum ve bunu saf bir işlev olarak sınıflandırabilecek tip teorileri tasarlıyorum.
Notlama ve bağlantı havuzu oluşturma gibi şeyleri içeren daha pratik örnekler de var, ancak bunu özellikle güzel bir örnek olarak görüyorum.