Да, это понятно. Но эта тема связана с expression problem, и тип данных можно расширять различными способами. В Rust ты можешь определить типаж, и экземпляры типажа и будут входить как бы в этот open union.
Я полагаю, в Хаскеле под капотом эти open union-ы реализованы как тайпкласс, просто с удобным сахаром.
Я все еще протестую, что expression problem не существует, среди "расширять разными способами" только один правильный