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