У меня есть замкнутое семейство типов, которое не имеет особого случая:
{-# LANGUAGE TypeFamilies #-}
type family Foo a where
Foo Bool = Int
Foo Int = Bool
Есть ли способ заставить средство проверки типов отклонить следующую программу:
data T a = MkT deriving Show
x :: T (Foo String)
x = MkT
из-за того, что не существует типа Foo String
?