grim' :: Player Dilemma
grim' = Player "Stately Grim" False $ 
  play C `atFirstThen`
  do m <- her (lastGame's onlyMove)
     triggered <- update (|| m == D)
     play (if triggered then D else C)

-- | If last move resulted in a "big" payoff, do it again, otherwise switch.
grim' :: Player Dilemma
grim' = Player "Stately Grim" False $ 
  play C `atFirstThen`
  do m <- her (lastGame's onlyMove)
     triggered <- update (|| m == D)
     play (if triggered then D else C)

-- | If last move resulted in a "big" payoff, do it again, otherwise switch.
grim' = Player "Stately Grim" False $ 
  play C `atFirstThen`
  do m <- her (lastGame's onlyMove)
     triggered <- update (|| m == D)
     play (if triggered then D else C)

-- | If last move resulted in a "big" payoff, do it again, otherwise switch.