| ECase !(Typed Expr) [CaseAlt]
| EConstr Type !Int !Int
Легко видеть, что EConstr совершенно не типобезопасен. В него можно вписать любой тип. Точно также ECase не проверяет, что разбор паттерна корректен. Так пример с их помощью можно легко написать unsafeCoerce:
Легко видеть, что EConstr совершенно не типобезопасен. В него можно вписать любой тип. Точно также ECase не проверяет, что разбор паттерна корректен. Так пример с их помощью можно легко написать unsafeCoerce:
И в целом нужно боле подробное описание того как constr/case работают.