タグ付けされた質問 「pl.programming-languages」

特にプログラミング言語は、そのセマンティクスに焦点を当てています。

3
プログラミング言語の形式的意味論
プログラミング言語の理論は初めてであり、プログラミング言語の形式的なセマンティクスのリソースに関する優れたリソースを探しています。構造的な操作上のセマンティクスを具体的に探しています。私はいくつかの本の推薦を得ました。しかし、私はより入門的なレベルのリソースを探しています。特にチュートリアル、ウェブサイト、無料の書籍の推奨事項を歓迎します。

3
リーダー、ライターモナド
してみましょうあることCCC。してみましょうの製品bifunctorも。通り猫が CCCである、我々はカレーできる:CCC(×)(×)(\times)CCC(×)(×)(\times) curry(×):C→(C⇒C)curry(×):C→(C⇒C)curry (\times) : C \rightarrow(C \Rightarrow C) curry(×)A=λB.A×Bcurry(×)A=λB.A×Bcurry (\times) A = \lambda B. A \times B ファンクターカテゴリは、通常のモノイダル構造があります。C⇒CC⇒CC \Rightarrow C でモノイド中モナドである。C⇒CC⇒CC \Rightarrow CCCC 有限積をモノイド構造と見なします。CCC curry(×)1≅idcurry(×)1≅idcurry (\times) 1 \cong id ∀A B.curry(×)(A×B)≅(curry(×)A)∘(curry(×)B)∀A B.curry(×)(A×B)≅(curry(×)A)∘(curry(×)B)\forall A\ B. curry (\times) (A\times B) \cong (curry (\times) A) \circ (curry (\times) B) したがって、はモノイド構造を保持するため、モノイドにモノイドを、コモノイドをコモナに輸送します。つまり、任意のモノイドをモナドに転送します(定義を見てくださいはモノイドでなければなりません)。同様に、それは輸送対角線comonoidにCoreaderの comonadを。w (W …

2
理論計算機科学研究におけるカテゴリー理論とモナドの現状?
背景。私は、カテゴリー理論、モナド、ハスケルに関連する研究に興味のある学士課程の学生であり、その分野の学士論文のトピックを見つけたいです。 私は紙を見ました Eugenio Moggi、「計算とモナドの概念」、1991 そして、私はそれの多くをまだ理解していません。私はおそらくそれを完全に理解するのにかなりの時間が必要でしょう。しかし、研究にもっと時間を費やす前に、この分野とその研究の可能性について理解を深めたいと思います。私は最近それについて私の教授に話しました、そして、彼は90年代にモナドが研究コミュニティで流行していたと私に話しました、しかし、今日彼らは時代遅れです。 したがって、私は現在、モナドに関連する最近の仕事を探していますが、疑問に思っています: 理論的コンピューターサイエンスのどの分野で、カテゴリー理論とモナドに関連する研究が行われていますか? プログラミング理論におけるモナドに関するE. Moggiの研究では、どのような研究が構築または提案されましたか?彼の論文に関連するフォローアップや進行中の研究はありますか?

1
従属レコードのパラメトリック性と射影消去
π 1:A × B → Aがπ 2:A × B → BA×B≜∀α.(A→B→α)→αA×B≜∀α.(A→B→α)→α A \times B \triangleq \forall\alpha.\; (A \to B \to \alpha) \to \alpha π1:A×B→Aπ1:A×B→A\pi_1 : A \times B \to Aπ2:A×B→Bπ2:A×B→B\pi_2 : A \times B \to B これは、F型の自然な読み取りがletスタイルの消去\ mathsf {let} \;(x、y)= p \; \ mathsf {in} \;とペアであるにもかかわらず、それほど驚くべきことではありません。elet(x,y)=pinelet(x,y)=pine\mathsf{let}\;(x,y) = p \;\mathsf{in}\; eは、2種類のペアが直観主義的なロジックで相互導出可能であるためです。 …

1
(方法)パイ計算でブロードキャストをモデル化できますか?
パイ計算で信頼できるブロードキャストをモデル化できますか? もしそうなら:どのように? そうでない場合:同様のプロセス代数が可能な場所はありますか? 私が試したもの: 送信者の場合はメッセージ送信したいのyを全てにP 1にP nは、あなたが書くことができます !(¯ X、Y )。Sおよびx (z )。P 1のX (Z )。P nは。しかし、が回複製されること、つまりメッセージが失われないことをどのように保証しますか?事前にがわかりません。関連するすべてのプロセス間でいくつかのメッセージを送受信することでのみ可能ですか?SSSyyyP1P1P_1PnPnP_nx¯¯¯y).Sx¯y).S\overline{x}y).Sx(z).P1x(z).P1x(z).P_1x(z).Pnx(z).Pnx(z).P_nnはn個(x¯¯¯y)(x¯y)(\overline{x}y)nnnnnn ...またはレプリケーションの非決定的な動作を誤解しますか?

3
外部関数インターフェース(FFI)と複数の言語バインディングを記述するプログラミング言語理論はありますか?
外部関数インターフェース(FFI)と複数の言語バインディングを記述するプログラミング言語理論はありますか? ここでは適切ではないstackoverflowの実装の問題をいくつか尋ねました。しかし、私はこのサイトの見解から尋ねて、私がここから何を得ることができるかを見たいです。 返信ありがとうございます! メタに関する返事をくれたデイブ・クラークに感謝!

3
型理論の帰納的定義における偏見の役割は何ですか?
私たちは、多くの場合、オブジェクト定義したいいくつかの推論規則に従って。これらのルールは、生成関数示すFが単調である場合、最小不動点得、μ Fを。私たちは取るA := μ Fの「誘導的な定義」であることをA。さらに、Fの単調性により、セットにAが含まれるとき(つまり、プロパティがAに普遍的に保持されるとき)を決定するために、「帰納の原理」を推論できます。A∈UA∈うんA \in UFFFμFμF\mu FA:=μFA:=μFA := \mu FAAAFFFAAAAAA Coqでは、これは、明示的な導入用語を使用してAの定義を記述することに対応します。この定義は特定の関数Fを示していますが、その関数は必ずしも単調ではありません。したがって、Coqはいくつかの構文チェックを使用して、定義の「整形式」を保証します。近似的に、それはの発生を拒否しますInductiveInductive\mathtt{Inductive}AAAFFFAAA的には、導入用語のタイプの負の位置でのます。 (これまでの私の理解に欠陥がある場合、私を修正してください!) 最初に、Coqのコンテキストでのいくつかの質問: 1)Coqの構文チェックは、の定義がAAA述語ですか?(もしそうなら、定義が不明確になる唯一の方法は不可逆性ですか?)それとも単調性をチェックしていますか?(それに対応して、非単調性はそれを殺すかもしれませんか?) 2)そのような否定的な発生は、必然的にAAAAAAAの定義はimpredicative /非単調ですか?または、その場合にCoqが明確に定義されていることを確認できませんか? より一般的に: 3)帰納的定義の偏見とその定義の生成関数の単調性との関係は何ですか?それらは同じコインの両面ですか?それらは無関係ですか?非公式に、どちらが重要ですか?

2
準PER /二機能関係/ジグザグ関係の使用?
集合と与えられると、それらの間の二機能関係は、次の特性を満たす関係であると定義されます。AAABBB (〜)⊆ A × B(〜)⊆A×B(\sim) \subseteq A \times B もしとと、その後、。 〜Ba〜ba \sim ba′〜B′a′〜b′a' \sim b'〜B′a〜b′a \sim b'a′〜Ba′〜ba' \sim b 二機能関係は、異なるセットからの平等の概念を定義することを可能にする部分的同値関係の概念の一般化です。その結果、これらは準PER(QPER)とも呼ばれ、次の図からジグザグ関係とも呼ばれます。 私はそれらを使用する論文を書いていますが、セマンティクスで使用するための良い参照を追跡するのに苦労しました。 Martin Hoffmanは、効果ベースのプログラム変換の正確さでそれらを使用します。 私は、テナントと竹山も同様にそれらの使用を提案したと主張する言及を見ました(しかし、良い参考文献はありません)。 それらはとてもいいアイデアなので、私の特定の使用法が独創的であるとは信じられません。さらなる参考文献をいただければ幸いです。

4
単項パラメトリックと二項パラメトリック
最近、Bernardy and Moulinの2012 LICS論文(https://dl.acm.org/citation.cfm?id=2359499)を見て、パラメトリック性に非常に興味を持ちました。このホワイトペーパーでは、依存型を持つ純粋な型システムの単項パラメトリック性を内部化し、構築を任意のアリティに拡張する方法のヒントを示します。 以前に定義されたバイナリパラメトリック性を見てきました。私の質問は、2項パラメトリック性を使用して証明できるが、単項パラメトリック性では証明できない興味深い定理の例は何ですか?また、2次ではなく3次パラメトリックで証明可能な定理の例を見るのも興味深いでしょう(ただし、nパラメトリックがn> = 2に等しいという証拠を見てきましたが、http://www.sato.kuisを参照してください).kyoto-u.ac.jp /〜takeuti / art / par-tlca.ps.gz)


3
2つのプログラムが異なると言えるのはいつですか?
Q1。2つのプログラム(C ++などのプログラミング言語で作成された)が異なると言えるのはいつですか? 最初の極端な例は、2つのプログラムが同一である場合に同等であると言うことです。もう1つの極端な例は、2つのプログラムが同じ関数を計算する(または同様の環境で同じ観測可能な動作を示す)場合に同等であると言うことです。しかし、これらは良くありません。素数をチェックするすべてのプログラムが同じというわけではありません。結果に影響を与えないコード行を追加できますが、それでも同じプログラムと見なします。 Q2。プログラムとアルゴリズムは同じ種類のオブジェクトですか?そうでない場合、アルゴリズムの定義は何ですか?プログラムの定義とどのように違いますか?2つのアルゴリズムが同等であると言えるのはいつですか?

1
リストに順番を維持
注文のメンテナンスの問題(または「リスト内の注文の維持」)は、操作をサポートすることです。 singleton:1つのアイテムでリストを作成し、そのポインターを返します insertAfter:アイテムへのポインターを指定すると、そのアイテムの後に新しいアイテムを挿入し、新しいアイテムへのポインターを返します delete:アイテムへのポインタを指定すると、リストから削除します minPointer:同じリスト内のアイテムへの2つのポインターを指定すると、リストの先頭に近い方を返します 私は、償却時間ですべての操作を実行するこの問題に対する3つの解決策を知っています。それらはすべて乗算を使用します。O (1 )O(1)O(1) Athanasios K. Tsakalidis:一般化リンクリストでの順序の維持 Dietz、P.、D. Sleator、リスト内の順序を維持するための2つのアルゴリズム Michael A. Bender、Richard Cole、Erik D. Demaine、Martin Farach-Colton、およびJack Zito、「リスト内の順序を維持するための2つの簡略化されたアルゴリズム」 A C 0にない算術演算を使用せずに、償却時間のリストで順序を維持できますか?O (1 )O(1)O(1)A C0AC0AC^0

2
副産物の証明理論?
同じオブジェクトが製品と連産品の両方である場合、カテゴリにはバイプロダクトがあります。誰かがバイプロダクトを持つカテゴリーの証明理論を調査しましたか? おそらく最もよく知られている例は、ベクトル空間のカテゴリーであり、直接和と直接積の構成は同じベクトル空間を与えます。これは、ベクトル空間と線形マップが線形論理のわずかに縮退したモデルであることを意味し、この縮退を受け入れる型理論がどのように見えるか興味があります。

2
論理関係の起源は何ですか?
実際に2つの質問があります。 誰が最初に論理関係を使用してセマンティクスを関連付けましたか? 私はそれらをレイノルドの「直接意味論と継続意味論の関係について」までさかのぼりましたが、徹底的な調査をしたとは言えません。 以前の日付の論理関係(Tait、'67)への参照が見つかりましたが、セマンティクスの関連ではありません。 論理関係の現在の最良の紹介は何ですか? 私は、ミッチェルの「プログラミング言語のための型システム」をTCSのハンドブックで知っています。他にどんな博覧会がありますか?

2
モジュラーコンパイラでPottierとGauthierのポリモーフィックな非機能化を使用した人はいますか?
機能停止とは、高次プログラムを1次プログラムに変換するプログラム変換です。アイデアは、プログラムが与えられた場合、有限数のラムダ抽象化があるため、各ラムダをIDで置き換え、各関数アプリケーションをそのIDで分岐する適用プロシージャの呼び出しで置き換えることができるということです。これは関数型言語のコンパイラーで使用されることもあり ますが、その適用性は、機能停止がプログラム全体の変換であるという事実によって制限されるため(プログラム内のすべての関数を静的に知る必要があります)、プログラム全体のコンパイラーのみがそれ。 ただし、PottierとGauthierには、GADTを含むより洗練された型付けを使用した、多相型型の非機能化アルゴリズムがあります。エンコードが指定されると、タグではないが高次関数を含むラムダデータ型にキャッチオールケースを追加することができます。つまり、モジュールごとにエンコードを使用して機能を無効にすることができるはずです。 誰かがこれをやったことがあり、このアイデアを使用しているコンパイラを指し示していますか?(おもちゃのコンパイラは大丈夫であり、実際に推奨されます。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.