Upgrade to Pro — share decks privately, control downloads, hide ads and more …

型についてちょっと考える

t10471
November 03, 2017

 型についてちょっと考える

主にHaskellとScalaの型クラスについて

t10471

November 03, 2017
Tweet

More Decks by t10471

Other Decks in Programming

Transcript

  1. 自己紹介 ✤ 所属 ✤ CyberAgent ✤ AI Messenger ✤ Haskellが好き

    ✤ 業務はScalaとPython ✤ 普段使っているもの ✤ tumx ✤ fish ✤ vim ✤ IntelliJ IDEA
  2. 型の種類 ✤ プリミティブ型(値型) ✤ JavaやC#,Haskell(GHC)の場合,boolean, int, float, charなど ✤ ポインタに乗ってないやつ(スタック)

    ✤ 言語によって違うかも? ✤ 参照型 ✤ 自分で定義した型とかクラスの型 ✤ ポインタに乗っているやつ(ヒープ)
  3. OOPのポリモーフィズムの種類 ✤ 載せたけど、ここはちょっと強引… ✤ クラスベース ✤ 継承でポリモーフィズムを表現する ✤ Java,C++など ✤

    プロトタイプベース ✤ プロトタイプチェーンを遡っていくことでポリモー フィズムを表現できる ✤ JavaScript
  4. ランクN多相 ✤ の前に型推論の話をしないといけない… ✤ 難しいのでちょっとだけ ✤ ナイーブな型推論はHindley-Milner ✤ 1階の型推論だけしかできないけど決定可能 ✤

    OCamlとScala(2系)はHindley-Milnerの拡張らしい ✤ System F(ωがつくのもある) ✤ 多相ラムダ計算ができるけど決定不能な場合がある ✤ Haskell(GHC)はこっち、Scala(Dotty)はこれの発展 系