Hindley-Milner型推論
HM型推論って、単相のものだけを指す?
多相のものは全てHMの拡張?
HM型推論とはコレである!バン!!という資料を読みたい
HM型推論以外の型推論アルゴリズムはあるのか
HM型システムと、HM型推論の関係
最もオーソドックス,型の集合と束縛された型変数の置換表を使って単一化する
Algorithm W を改善(高速化)したもの.Algorithm W が構文木をトップダウンに見て推論していく一方,Algorithm M はボトムアップに推論していく.W の逆なので M
Level-based HM
level という値を導入することで置き換え表を使わず多相型を扱えるようにしたもの.アルゴリズムがシンプルになり実行効率も高い
(Didier Rémy 1992)
こんなコードがあった時に、どのタイミングでgの型が決定されるのかを知りたい #?? code:hs
rank1 :: forall a. (a -> a) -> a -> a
rank1 g x = g x
code:hs
int = rank1 (+1) 1 -- 2
読みやすいらしい
Generics的な、最も汎用的な型を推論
TaPL.icon 23章
型推論器のinputとoutput
具体的にどれのことを指しているのか
HM以外のものを知らないがゆえになっているのかも知らん
実装
scala
Groovy
kotlin
C
Rust
Haskell
自作言語の型推論
jsで
ML
ocaml
prolog
F#