9

すべての要素が特定の型のサブタイプになるように制約された HList が必要だと思います。LUBConstraint私が望むもののようであり、実際にそのような HList の構築を制約します - しかし、マッピングできるように証拠を再度取得する方法がわかりません (実際には、モナドである必要があるため、トラバースします) HList を介して、各要素で (LUB 型に存在する) メソッドを呼び出します。

さらに、トラバース操作の結果として得られる HList の型を、入力 HList の型とまったく同じ型にする必要があります。

ユース ケースは一種の機能的な「リスナー リスト」です。HList のすべての要素は「イベント」の通知を受け、それらを受け入れるか拒否し、更新された「内部状態」で新しいバージョンを返す必要がある「リスナー」です。 . これだけあれば、通常の不変の Scala コレクションを使用できます。しかし、使用せずに個々の要素に直接型指定されたアクセスも必要ですasInstanceOf。したがって、HList を使用しようとする動機です。

4

1 に答える 1