Scala 3のMatch Typesを使って型レベルsort

今までのScala 2だとAux Patternやimplicit色々使って書くようなやつが、3だとこうやって書けるよ、という話。

https://gist.github.com/xuwei-k/924c69482c972d7bac496922ed725f79

でもこれだと、型は生成出来ても、valueOfなどで実際の値が生成できないんだけど、どうすればいいのか少し悩んだけどよくわからなかったので、一旦諦めた・・・。

あと、TupleをHList的に使おうとしたけど、 (1, 2, 3)(Int, Int, Int) になってしまって、いい感じに扱えなかったので、わざわざHListを自作しました。 (Tupleのままいい感じにやる方法、なにかあるのか?)

Scala 2でライブラリ使わずにやるやつ↓

jto.github.io

今回作ったやつ↓

gist.github.com