【发布时间】:2015-06-27 15:15:04
【问题描述】:
我需要学习使用 Reader monad。 (还有作家和国家)。
我所做的游戏竞赛总是包含在整个游戏中有效的全局参数。还有一堆只在一个回合内有效的参数。
我结束了所有最新的比赛,其中有很多功能,几乎都以 Game 和 Turn 作为输入参数。
在阅读了 reader monad 之后,我正在考虑:
data Game = Game AllNeeded StrategicPositions AndGameRelatedStuffs
data Turn = Turn PlayersPositions AndTurnDependentStuffs
并且对于每个循环,当我收到轮流相关数据时,我计划有一个变量Reader Game Turn:
turnReader = Reader currentGame currentTurn
let actionToPerform = play turnReader
你认为这是 Reader monad 应用的好例子吗? 您认为我可以/应该蒙上眼睛并在这种情况下学习使用 Reader monad 吗?还是有更合适的单子,比如 State ?
【问题讨论】:
-
这不是基于意见的,因为 (a) Reader monad 具有非常精确的语义,并且 (b) 与标题相比,实际问题的范围有限。我将编辑标题以使其更清晰。