是否有一些带有签名的功能
lensMapState[S, T, A](lens : Lens[S, T]): State[T, A] => State[S, A]
使用语义对所选部分进行修改并获得结果
一种实现可能是
def lensMapState[S, T, A](lens: Lens[S, T]): State[T, A] => State[S, A] =
stateT => State { s =>
val (result, x) = stateT.run(lens.get(s))
(lens.set(result)(s), x)
}
但是如果有更直接的方法使用单片眼镜或scalaz.Lens?