Haskell 伦菲尔德:我如何让这个遍历工作?

Haskell 伦菲尔德:我如何让这个遍历工作?,haskell,traversal,lenses,Haskell,Traversal,Lenses,我有一些嵌套记录(减少到相关字段) 我正在尝试创建一个具有这种类型的函数 playerScores :: GameS -> [(PlayerName, GhoulCount)] 这里是一个尝试,给我一个类型的函数 playerScores :: GameS -> [GhoulCount] playerScores gs = toListOf (game_data_gs . players_gd . p_map . traverse . score ) gs 这个版本做我想

我有一些嵌套记录(减少到相关字段)

我正在尝试创建一个具有这种类型的函数

playerScores :: GameS -> [(PlayerName, GhoulCount)]
这里是一个尝试,给我一个类型的函数

playerScores :: GameS -> [GhoulCount]
playerScores gs =
    toListOf (game_data_gs . players_gd . p_map . traverse . score ) gs
这个版本做我想要的,但不是我想要的方式。我想使用
镜头
遍历

playerScores :: GameS -> [(PlayerName,GhoulCount)] 
playerScores gs = 
    Data.Map.Strict.toList                        $
    Data.Map.Strict mapWithKey (\_ v -> _score v) $
    view (game_data_gs . players_gd . p_map) gs 

那么我该如何进行遍历呢?

来自freenode上的glguy:

getScore :: GameS -> [(Text,GhoulCount)]
getScore gs = 
    itoListOf (game_data_gs . players_gd . p_map . ifolded <. score) gs
getScore::GameS->[(文本,食尸鬼计数)]
getScore gs=
itoListOf(游戏数据、玩家、游戏地图)
getScore :: GameS -> [(Text,GhoulCount)]
getScore gs = 
    itoListOf (game_data_gs . players_gd . p_map . ifolded <. score) gs