3

したがって、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. これは同型でなくなりますか?いくつかのルールを破ることなく、より簡単な方法はありますか?BO[_]

4

2 に答える 2