このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

アハハハハ(ちからない笑い): 全称型/存在型

全称型? 存在型? ‥‥??」を書き終わった後で見つけた、Swift の存在型に関する記事、:

Existential any allows you to define existential types in Swift by prefixing a type with the any keyword. In short, an existential means “any type, but conforming to protocol X.”


Existential any は、Swift において、型の直前にキーワード any を置くことによって存在型を定義可能にする。手短に言えば、存在型とは「任意の型だが、プロトコル X に従うもの」だ。

プロトコルも指標と思っていいでしょうから、Rust の場合と同様に、仕様・約束を満たすモデルを型とみなすようです。モデルの全体がひとつの型なのか、固有特定のモデルが型なのかは(冒頭パラグラフしか読んでないので)ハッキリしませんが、それはともかく、キーワードが any って ‥‥、any は $`\forall`$ で書くんだけど。

Haskell で {-# LANGUAGE ExistentialQuantification #-} を指定すると存在型を定義できるとのことですが、そのとき使うキーワードも forall で、それは $`\forall`$ 。

前の記事で紹介した記事「Haskell/存在量化された型」に、なぜ存在型に全称限量子なのか? が説明されている(ように思える)のですが、ナニイッテルカワカランですね -- コジツケっぽい。

wiki.haskell.org の "Existential type" に次の記述が見つかります。

the notation (using keyword forall) may be confusing. In Essential Haskell, existential types can occur not only in data declarations, and a separate keyword exists is used for their notation.


記法(キーワード forall を使う)は混乱をまねくかも知れない。Essential Haskell では、存在型はデータ宣言に現れるだけではなく、それを表す記法には別なキーワード exists が使われる。

"existential any" という摩訶不思議な言葉が現れたり、exists の代用に forall が使われたりと、「任意の($`\forall`$)」と「存在する($`\exists`$)」の使い方がグジャグジャ。いや、だから、安易に論理記号を流用したりしないほうがいいんだって。

関連記事:

  1. 全称型? 存在型? ‥‥??
  2. 全称型/存在型 補遺
  3. 全称型/存在型: まとめと Models-as-Types
  4. 全称型/存在型: 代替案