2
私はいくつかのネストされたレコードを(関連するフィールドに縮小して)持っています。Renfield:このトラバーサルを働かせるにはどうしたらいいですか?
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 }
私はこのタイプここ
playerScores :: GameS -> [(PlayerName, GhoulCount)]
で関数を作成しようとしているが、一つの試みである私のタイプ
playerScores :: GameS -> [GhoulCount]
playerScores gs =
toListOf (game_data_gs . players_gd . p_map . traverse . score) gs
このバージョンでは、私が何をしたいんの機能を提供し、私が望む方法ではありません。 Lenses
と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
このトラバーサルを行うにはどうすればよいですか? freenodeの上glguyから