Drkcore

12 10 2012 Haskell Tweet

ランク2多相とかランクN多相を理解する

これもわかってしまえば、分かりやすい概念かもしれないが。

GHCが暗黙の量化を行う手順は次のとおり。ユーザが書いた型の最上位(のみ)において、明示的なforallがないなら、またその時に限り、その型で言及されているもののスコープにない型変数を調べ上げ、それらを全称量化する。7.11.5.3. 暗黙の量化

をみると小難しい話なのかな?と思うが、具体例は分かりやすい。

f :: (a -> a) -> Int
         -- は
f :: forall a. (a -> a) -> Int
         -- のことであり
f :: (forall a. a -> a) -> Int
         -- ではない

なんというか数学の定義っぽいことをやっているが、代数的データ型だからそういうもんなんだろう。

ランクとはforallの深さ、つまり括弧のこと(層)のことを言っているわけである。

  • 第20回 更新を高速化するためのSTモナド
  • Haskell/Polymorphism
  • 7.11.5.3. 暗黙の量化

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021