-- initialMultipleChoiceState provides a useful initial configuration of
-- the MultipleChoiceState for the time before a new question has been
-- generated.

initialMultipleChoiceState :: Ord c => c -> [a] -> Int -> MultipleChoiceState a c
initialMultipleChoiceState c xs n = MultipleChoiceState {
  mode = ListenMode,
  currentConfig = c,
  correctAnswer = xs!!0,
  allAnswers = xs,
  possibleAnswers = xs,
  answerButtonModes = NotPossible <$ xs,
  attemptsRemainingDefault = n,
  attemptsRemaining = n,
  scoreMap = empty
  }
initialMultipleChoiceState :: Ord c => c -> [a] -> Int -> MultipleChoiceState a c
initialMultipleChoiceState c xs n = MultipleChoiceState {
  mode = ListenMode,
  currentConfig = c,
  correctAnswer = xs!!0,
  allAnswers = xs,
  possibleAnswers = xs,
  answerButtonModes = NotPossible <$ xs,
  attemptsRemainingDefault = n,
  attemptsRemaining = n,
  scoreMap = empty
  }
initialMultipleChoiceState c xs n = MultipleChoiceState {
  mode = ListenMode,
  currentConfig = c,
  correctAnswer = xs!!0,
  allAnswers = xs,
  possibleAnswers = xs,
  answerButtonModes = NotPossible <$ xs,
  attemptsRemainingDefault = n,
  attemptsRemaining = n,
  scoreMap = empty
  }