-- | A variant of Tit-for-Tat that only defects after two defects in a row.
titForTwoTats :: Player Dilemma
titForTwoTats = "Tit-for-Two-Tats" ::: [play C, play C] `thereafter`
    do ms <- his `each` lastNGames' 2 onlyMove
       return $ if ms == [D, D] then D else C

-- | The Grim Trigger.  Cooperates until the opponent defects, then defects
--   forever.
titForTwoTats :: Player Dilemma
titForTwoTats = "Tit-for-Two-Tats" ::: [play C, play C] `thereafter`
    do ms <- his `each` lastNGames' 2 onlyMove
       return $ if ms == [D, D] then D else C

-- | The Grim Trigger.  Cooperates until the opponent defects, then defects
--   forever.
titForTwoTats = "Tit-for-Two-Tats" ::: [play C, play C] `thereafter`
    do ms <- his `each` lastNGames' 2 onlyMove
       return $ if ms == [D, D] then D else C

-- | The Grim Trigger.  Cooperates until the opponent defects, then defects
--   forever.