こんにちは。 マイクロアドでサーバーサイドエンジニアをしている飛田です。 今回はScalaの依存型について調査してみましたので、共有させていただきます。 依存型について調査したきっかけは、 Scalaで型レベル”だけ”でクイックソートという記事で、 こちらは型を使ってクイックソートを行う(コンパイル結果がクイックソートの結果になる)という内容になっています。 こちらを拝見して、Scalaの型の柔軟性にかなりのポテンシャルを感じましたので、 Scalaの型に関するトピックとして、「依存型」について共有させていただきます。 依存型とは 依存型とは定義が値に依存する型のことです。 例えば、以下のコードの型 hoge.T は hogeの値に依存している依存型になります。 trait Hoge { type T val t: T } val hoge = new Hoge { type T = St