我试图从子结构中获取值列表。
我有以下结构
("Value",[(1,"1"),(2,"2"),(3,"3"),(4,"4"),(5,"5")])
我试图得到列表中元组的第二个元素。
["1", "2" , "3" , "4" , "5"]
view (_2 . toListOf . _2) a
我也试过
traverse
对列表具有折叠效果。我需要结果作为一个列表。
Prelude Control.Lens> let a = ("Value", [(i, show i)|i<-[1..5]]) :: (String, [(Int, String)])
Prelude Control.Lens> a
("Value",[(1,"1"),(2,"2"),(3,"3"),(4,"4"),(5,"5")])
Prelude Control.Lens> view (_2 . toListOf . _2) a
<interactive>:36:7: error:
⢠Couldn't match type â[]â with âConst tâ
Expected type: Getting t (String, [(Int, String)]) t
Actual type: (t -> Const t t)
-> (String, [(Int, String)]) -> [(String, [(Int, String)])]
⢠In the first argument of âviewâ, namely â(_2 . toListOf . _2)â
In the expression: view (_2 . toListOf . _2) a
In an equation for âitâ: it = view (_2 . toListOf . _2) a
⢠Relevant bindings include it :: t (bound at <interactive>:36:1)
<interactive>:36:23: error:
⢠Couldn't match type âConst t t0â
with â[(Int, String)]
-> Const (Data.Monoid.Endo [[(Int, String)]]) [(Int, String)]â
Expected type: (t -> Const t t)
-> Getting
(Data.Monoid.Endo [[(Int, String)]])
[(Int, String)]
[(Int, String)]
Actual type: (t -> Const t t)
-> ([(Int, String)]
-> Const (Data.Monoid.Endo [[(Int, String)]]) [(Int, String)])
-> Const t t0
⢠In the second argument of â(.)â, namely â_2â
In the second argument of â(.)â, namely âtoListOf . _2â
In the first argument of âviewâ, namely â(_2 . toListOf . _2)â
⢠Relevant bindings include it :: t (bound at <interactive>:36:1)
Prelude Control.Lens>