возьмём произведение в обычном ЯП с типами и тотальными функциями Int и String, но рассмотрим в качестве кандидата тип X = (Int, String, Boolean)
Тогда для любой пары f: A-> Int, g : A-> String, мы всё ещё можем найти fxg: A -> X, но не единственным образом, мы можем взять
a => (f(a), g(a), true) либо a => (f(a), g(a), false)