GeoLogicの社内勉強会でshapelessと代数的データ型について発表しました。
shapelessの機能の一つには代数的データ型とジェネリックな型を相互に行き来するものがあります。
代数的データ型は直積型と直和型のデータを組み合わせて表現するデータ型であり。Scalaではcase classで直積型を表し、traitを定義しそれを継承したクラスを定義することで直和型を表すことができます。
shapelessではこれらの代数的データ型をHeterogeneous Listに変換し、コードの再利用性を高めることができます。