厳密な完全部分注文の2デカルトの閉じたカテゴリ(Hask)
プログラミング言語が合計、積、非終了を一緒に持つことができないことはよく知られているようです。 Q1。これは本当ですか?以下(または私が挙げた上記のリンク)は部分的な議論です。 ただし、どのカテゴリが関連するカテゴリであるかをある程度正確に説明した後でも、Hinzeの付属物を使用したジェネリックプログラミングでは、この問題は無視されます。特に、Haskellが厳密な連続部分注文のカテゴリによってモデル化され、合計と積を持っていることについて、彼は(おそらく予約なしで)話します。しかし、Haskellには合計がないことを知っています(右?)。(論文の一部は代わりにS e tを使用していますが、これは非終了を許可していません)。SCpoSCpo\mathbf{SCpo}SetSet\mathbf{Set} Q2 では、何が欠けていますか?4つのオプションが表示されます。 人々はしばしば、Haskellについて議論するとき、意図的に非終了を無視します。おそらく、この論文もそれをしている。しかし、なぜCPOに言及するのでしょうか。 私が議論する障壁は巧妙な方法で回避することができます。具体的には、紙モデルは、非厳密Haskellの関数の厳密な機能によってF :A ⊥ → B、他の理由。f:A→Bf:A→Bf : A \to Bf:A⊥→Bf:A⊥→Bf : A_{\bot} \to B この論文ではその制限について触れていますが、見逃しています。私はこの言及を探すためにいくらかの努力を費やしましたが、何も見つけることができませんでした。 これは実際の誤りであり、紙が主張Eitherするものはそうであるにもかかわらず、誰もがHaskellを確かに主張し続けているので、確かに(他の人々が同意するように)カテゴリカルな合計に欠けています。代わりに、帰納型と共帰型のすべての言語ですべてがうまく機能します。 バックグラウンド A≅A×1≅A×0≅0A≅A×1≅A×0≅0A \cong A \times 1 \cong A \times 0 \cong 0AAA これは、たとえば、オブジェクトがゼロの先のとがったセットのカテゴリは、2デカルト閉ではあり得ないことを意味します。 ⊥⊥\botωω\omega⊥⊥\botCPO⊥CPO⊥\mathbf{CPO}_{\bot}CPOCPO\mathbf{CPO} ⊥⊥\bot