したがって、scala では、典型的な Lens シグネチャは次のようになります。
case class Lens[O,V](get: O => V, set: (O,V) => O)
しかし、ご覧のとおり、同じ型の値を更新および設定するだけで、ある型を別の型に設定することはありません。私が念頭に置いているのは、次のようなものです。
case class Lens[O[_],A,B](get: O[A] => A, set: (O[A],B) => O[B])
私の質問はA
. これは同型でなくなりますか?いくつかのルールを破ることなく、より簡単な方法はありますか?B
O[_]