如何在Haskell中使用镜头操作列表

时间:2015-11-07 16:31:26

标签: haskell lens

我是镜头库的初学者。 我正在尝试从某些数据结构中提取列表。

我想知道如何实现满足的f

("a",[(0,'a'),(1,'b'),(2,'c')]) ^. _2 . f === [0,1,2]

经过努力,我找到了答案。

g :: Functor f => Getting a s a -> (forall b. Getting (f b) (f s) (f a))
g = to . fmap . view
f = g _1 

是否有与g对应的库函数? 否则,有没有更优雅的方式来实现这样的f

1 个答案:

答案 0 :(得分:4)

我会去

("a",[(0,'a'),(1,'b'),(2,'c')]) ^.. _2 . traverse . _1

(请注意^..而不是^.,因为这是一次遍历。)