2
J'ai quelques enregistrements imbriqués (réduits aux champs pertinents).Renfield: Comment faire pour que cette traversée fonctionne?
data GameS = GameS { _game_data_gs :: GameData }
data GameData = GameData { _players_gd :: PlayerMap }
data PlayerMap = PlayerMap { _p_map :: Map PlayerName Player }
data Player = Player { _score :: GhoulCount }
Je suis en train de créer une fonction de ce type
playerScores :: GameS -> [(PlayerName, GhoulCount)]
ici est une tentative, me donne une fonction de type
playerScores :: GameS -> [GhoulCount]
playerScores gs =
toListOf (game_data_gs . players_gd . p_map . traverse . score) gs
Cette version fait ce que je veux, mais pas comme je le veux. Je voudrais utiliser Lenses
et Traversals
.
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
Comment faire pour que cette traversée fonctionne?