~/ a = TypeError ('Text "Some error message")
_ ~/ _ = ()
class If f (a ~ Ty, b ~/ Ty) (b ~ Ty, a ~/ Ty) => Cls a b f
не подойдет?
Так это тоже матч, в отличие от встроенного ~
нужно будет усложнить для f a ~/ g b тоже.
Ну так констрейнт на неравенство нормально вообще никак не сделать, а вот констрейнт на равенство тут настоящий
Но здесь кстати это не сломает forall a . a ~/ a потому что это и так не выполняется
Обсуждают сегодня