given … as Resolve[Head *: Tail] は using が宣言された上で定義されている。 ◦ つまり、以下 using の条件を満たす場合に Head *: Tail は生成できる 1. Head の型を返却する Entry が Entries の中に存在する (FindEntry[Entries, Head]) 2. 2. の Entry が依存する引数リストが生成できる (findEntry.In) • この引数リストもまた Tuple なので、これを再帰的に検索 • 引数なしのものは EmptyTuple を引数として登録しており、そこが再帰の終了条件とな る 3. Tail が生成できる (Resolve[Tail]) • Dotty は標準ライブラリで Tuple が generic に扱えるようになったのでこのような再帰的なテクニックが活 用しやすい