「全称型? 存在型? ‥‥??」を書き終わった後で見つけた、Swift の存在型に関する記事、:
Existential any allows you to define existential types in Swift by prefixing a type with the
anykeyword. 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 keywordexistsis used for their notation.記法(キーワード
forallを使う)は混乱をまねくかも知れない。Essential Haskell では、存在型はデータ宣言に現れるだけではなく、それを表す記法には別なキーワードexistsが使われる。
"existential any" という摩訶不思議な言葉が現れたり、exists の代用に forall が使われたりと、「任意の($`\forall`$)」と「存在する($`\exists`$)」の使い方がグジャグジャ。いや、だから、安易に論理記号を流用したりしないほうがいいんだって。
関連記事: