誰かが、PCFの連続性関数の係数の定義不可能性についての参照を私に指摘できますか?
Andrej Bauerがいくつかの問題をより詳細に探求している非常に素晴らしいブログ投稿を書いていますが、この質問にいくつかのコンテキストを与えるために彼の投稿のほんの一部を要約します。ベイル空間は、自然数列のセット、または同等に、自然数から自然数\ N \ to \ Nまでの関数のセットです。この質問では、計算可能なストリームにのみ注意を限定します。
さて、関数すべてのためならば連続している、の値の要素の唯一の有限数によって異なり、私たちは実際に上位を計算することができれば、それはcomputably連続です必要なxsの要素数に制限されます。いくつかの計算モデルでは、実際にプログラム\ mathsf {modulus}を書くことが可能 です:(B \ to \ bool)\ to B \ to \ Nこれはベイル空間とベイル空間の要素で計算可能な関数を取り、ストリームの要素数の上限を返します。
これを実装するための1つのトリックは、ローカルストレージを使用して、最大インデックスをストリームに記録することです。
let modulus f xs =
let r = ref 0 in
let ys = fun i -> (r := max i !r; xs i) in
f ys;
!r
もちろん、ys
議論はもはや純粋に機能的なプログラムではありません。このプログラムで私の関心は、それが唯一のローカルストアを利用し、そのためであるという事実から来て外延純粋。私は(とりわけ)高次命令型プログラミングに取り組み、これを純粋な関数として分類できる型理論を設計しています。
メモ化や接続プーリングなど、より実用的な例もありますが、これは特に美しい例です。