「型ラムダ」のご紹介:Scala 3の新しい型表現(3)

Scala 3 (Dotty 0.26.0-RC1)
最終更新:2020年7月9日

[AD] scalapediaでは記事作成ボランティアを募集しています

この記事では、Scala 3(コードネーム:Dotty)にて新たに導入された「型ラムダ(Type Lambdas)」について解説します。

型ラムダで高階型を表現する

型ラムダを使用すると、高階型を表現することができます。

型ラムダの特長は、高階型を表現する際に型定義をする必要がないことです。

例えば以下のような型定義があるとします。

type T[X, Y] = Map[X, Y]

これを、Scala 3では以下のように記述することもできるようになりました。

[X, Y] =>> Map[Y, X]

この型は二つの型引数をとる型コンストラクタを定義しています。

引数 XYMap[Y, X] に投射しています。

ラムダ型の型パラメータは境界を持つことができますが、+-の変位アノテーションを持つことはできません。

型ラムダの導入は何が嬉しいのか

「型の表現力が増した」ということです。
つまり、2系までなら表現しづらかった型を簡単に表現できるようになったということです。

Scala言語の開発、あるいはある種のライブラリの開発にとっては生産性が高まるため喜ばしいはずです。

とはいえ、Scalaを活用する一般の開発者にとっては、これといって嬉しいことはないかもしれません。

サイト内検索