我正在尝试Lens
从一个 getter 和一个 setter 创建一个我从另一个得到的Lens
:
import Control.Lens
idL :: Lens s t a b -> Lens s t a b
idL l = lens (\s -> view l s) (\s b -> set l b s)
但是,它失败了一个晦涩的(对我来说)错误:
Expected type: Getting a s a
Actual type: (a -> Accessor a b) -> s -> Accessor a t
In the first argument of `view', namely `l'
我究竟做错了什么?Getting
这可能是非常基本的东西,但是,唉,我对真正发生的事情 ( , s)的了解还不够,无法Accessor
自己解开它。