鉴于
data Person = Person { _name :: String }
makeClassy ''Person
这创建了一个
name :: Lens' Person String
我可以定义以下使用元组内
name
的镜头。sndPerson :: Lens' (a, Person) (a, String)
sndPerson = lens
(\(a, p) -> (a, p ^. name))
(\(_, p) (a, n) -> (a, p & name .~ n))
有更好/规范的方法来定义上面的sndPerson
吗?
_2 . name
怎么样? - epsilonhalbeforall s t b (f :: * -> *). (Field2 s t b b, HasPerson b, Functor f) => (String -> f String) -> s -> f t
,它不是Lens' (a, Person) (a, String)
。 - Louis PanLens' (a, Person) String
,而不是Lens' (a, Person) (a, String)
。 - Louis Pan