Discriminated unions и невозможные состояния — Software Engineer Interview Preparation