先物はカテゴリー理論の観点からどのように説明されますか?


回答:


25

それが起こると、私は今これについて論文を書いています。IMO、先物や約束について考える良い方法は、時相論理のカリー・ハワード通信の観点からです。

基本的に、futureの背後にある考え方は、進行中の計算を表すデータ構造であり、その上で同期できるということです。一時的なロジックの面では、これが最終的に演算子である。:これは、モナドの構造を有する R E T U R NA A B I N DA BAB におけるR E T U R nはA

return:AAbind:(AB)AB
return操作スポーン直ちにその引数を返し、そのプロセス待つ新規プロセス作成、の値を適用し、Fをその値に、そして次に待つBに戻る前-value。約束/ CommonJSのための提案は単項バインド操作を呼び出し、そしてScalaの2.10は、ちょうどそれを標準モナドのインターフェイスを提供しますbindafBthen

最終的にオペレータへのデュアル常に演算子であるAあらゆる瞬間に、あなたが得ることを言う時相論理の、Aを。Kripkeの時相論理のセマンティクス(証明可能性をモデル化するだけ)からλ計算のカテゴリーセマンティクス(ラムダ項/証明もモデル化する)に渡すと、実際にはこれを行う方法が複数あることがわかります。AAAλ

あなたがすることができる最も簡単な方法は取ることですあなたが持っている一度という理由で、、あなたは常にそれを持っています。これは機能しますが、退屈な感じです、IMO。:)AAA

最も自然な(IMO)ことは、を取ることですこれにより、各瞬間に(潜在的に異なる)を取得できます。次に、先物を使用したデュアルからモナドのプログラミングスタイルとして、関数型リアクティブプログラミング(FRP)(Tarmo UustaluおよびVarmo Veneによって最初に提案された)の共流スタイルを見ることができます。AAStreamAA

しかし、彼らが示唆するような共通の -calculusは、その優雅さにもかかわらず、ストリームを使用した明示的なプログラミングに比べて表現力の深刻な損失を引き起こします。 、特に固定小数点。λ

ニックベントンと私は、「リアクティブプログラムのウルトラメトリックセマンティクス」の論文で、ストリームを使用した明示的なプログラミングについて議論しました。その後、アラン・ジェフリーは彼の論文LTL types FRPで型システムとしてLTLを使用することを提案しました。WolfgangJeltschも彼の論文で線形時間時相論理および機能的反応プログラミングのための共通カテゴリセマンティクスに向けた観察をしました。

ニックと私がとる見解と、アランとウルフガングがとる見解との違いは、Birkedalらの「合成ガードドドメイン理論最初のステップ:トポスでのステップインデックス付け」で示された構造を比較することで最もよく理解されます(IMO)アランの紙で木の。木のトポス(サイズで順序付けられた自然数のプリシーブ)は、ニックと私が使用した超空間のカテゴリーに非常に似ていますが、これらは両方ともプリシーフであるため、Alanのカテゴリー(時間の離散カテゴリーにわたるプリシーブ)と比較するのがはるかに簡単ですカテゴリー。

並行性の先物に特に興味がある場合は、LTLではなくCTLを検討することをお勧めします。私の知る限り、それは現在未開拓の領域です!

編集:ここにドラフトへのリンクがあります。このペーパーは主に型付きFRPの実装に関するものなので、言語は同期的です。しかし、セクション3.3の先物/イベントの説明のほとんどは、基本的に真の並行言語にも同様に当てはまるはずです。


1
あなたがそれを終えたとき、私はそれのコピーを得たいです。
デイブクラーク

1
これは、先物の重要な特性を失うようです。いったん値が取得されると、変更することはできません。私はを公​​理として表現することを試みますが、がストリームを意味する場合、これは望みではありません。 )AA
アレクセイロマノフ

私は最近、ScalaタイプTry[T]Future[T]デュアルであることを読みましたが、これが何を意味するのか、どのような意味であるのか、私はまだよく理解していません。
ジョルジオ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.