¿Cómo puedo usar evidencia contradictoria?
Mientras escribosobre cómo hacer subtipos en Haskell, se me ocurrió que sería muy conveniente poder "usar" evidencia contradictoria comoTrue ~ False
informar al compilador sobre ramas muertas. Con otro tipo vacío estándar,Void
, elEmptyCase
La extensión le permite marcar una rama muerta (es decir, una que contiene un valor de tipoVoid
) de esta manera:
use :: Void -> a
use x = case x of
Me gustaría hacer algo similar por insatisfactorioConstraint
s.
¿Hay un término al que se le puede dar el tipoTrue ~ False => a
pero no se le puede dar el tipoa
?