有人可以指出PCF中连续模量函数的不可定义性吗?
安德烈·鲍尔(Andrej Bauer)写了一篇非常不错的博客文章,更详细地探讨了一些问题,但是我将总结一下他的文章中的一部分,以为该问题提供一些背景信息。Baire空间是自然数序列的集合,或者等效地是从自然数到自然数N → N的函数集。对于此问题,我们将仅将注意力集中在可计算的流上。
现在,一个函数是连续的,如果对于每个X 小号∈ 乙,的值˚F (X 小号)仅依赖的元件的有限数量的X 小号,它的computably连续如果我们实际上可以计算需要x s的元素的上限。在计算的某些型号,它实际上可以写一个程序 米Ø d ü 升ü š:(乙→ b Ø这需要在Baire空间和Baire空间的元件的可计算函数,并给出背面上界流的元素的数量。
实现此目的的一个技巧是使用本地存储将最大索引记录到所看到的流中:
let modulus f xs =
let r = ref 0 in
let ys = fun i -> (r := max i !r; xs i) in
f ys;
!r
当然,该ys
参数不再是纯粹的功能程序。我对该程序的兴趣来自于这样一个事实,即它仅利用本地存储,因此具有扩展性。我从事(其中包括)高阶命令式编程的工作,并且正在设计可以将其归类为纯函数的类型理论。
还有一些更实际的示例,涉及记忆和连接池之类的内容,但是我发现这是一个特别漂亮的示例。