generated at
Hindley-Milner型推論
よく知られた型推論アルゴリズムの一つ
HaskellでTypeInferを作るはこれに沿っている



HM型推論って、単相のものだけを指す?
多相のものは全てHMの拡張?
HM型推論とはコレである!バン!!という資料を読みたい
HM型推論以外の型推論アルゴリズムはあるのか
HM型システムと、HM型推論の関係






単相型のHindley-Milner型推論を多相型に拡張したもの
>最もオーソドックス,型の集合と束縛された型変数の置換表を使って単一化する
>Algorithm W を改善(高速化)したもの.Algorithm W が構文木をトップダウンに見て推論していく一方,Algorithm M はボトムアップに推論していく.W の逆なので M
Level-based HM
>level という値を導入することで置き換え表を使わず多相型を扱えるようにしたもの.アルゴリズムがシンプルになり実行効率も高い
(Didier Rémy 1992)
こんなコードがあった時に、どのタイミングで g の型が決定されるのかを知りたい #??
hs
rank1 :: forall a. (a -> a) -> a -> a rank1 g x = g x
hs
int = rank1 (+1) 1 -- 2

chrome-extension://oemmndcbldboiebfnladdacbdfmadadm/http://lucacardelli.name/Papers/BasicTypechecking.pdf
読みやすいらしい












自動的に全称型をつける様に設計されたアルゴリズム
Generics的な、最も汎用的な型を推論
TaPL 23章



型推論器のinputとoutput
具体的にどれのことを指しているのか
HM以外のものを知らないがゆえになっているのかも知らん




実装
scala
Groovy
kotlin
C
Rust
Haskell
自作言語の型推論
jsで
ML
ocaml
prolog
F#