2015-11-07 35 views
3

我是鏡頭庫的初學者。 我想從一些數據結構中提取一個列表。如何在Haskell中使用鏡頭處理列表

我不知道如何實現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

回答

4

我會去

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

(注意^..,而不是^.,因爲這是一個穿越。)