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

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

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for t10471 t10471
November 03, 2017

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

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

Avatar for t10471

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)はこれの発展 系