El paquete void pretende ofrecer un tipo llamado inhabitable Void
, que se define de la siguiente manera -tipo de malabarismo innecesario para definir Data.Void (paquete "vacío" en Hackage)?
newtype Void = Void Void
¿Cómo es esta definición hay nada mejor que usar algo más sencillo? Diga -
data Void
Si mi comprensión es correcta, ambos tipos de datos contienen solo valores inferiores. Sin embargo, este último es mucho más fácil de entender.
EDIT: Bien, entonces entiendo la respuesta de Daniel a continuación. Sin embargo, pensé en otra forma posiblemente más simple de hacerlo mientras permanecía compatible con Haskell98. Podemos usar un tipo de datos abstracto y no exponer constructores al usuario.
module Data.Void (Void) where
data Void = Void
Ahora sólo el código en el módulo Data.Void puede construir un vacío, sin embargo, ya que sabemos que no , el tipo de datos vacío es efectivamente deshabitado.
¿Eso funcionaría o me falta algo aquí?
"Ahora solo el código en el módulo Data.Void puede construir un Void" que es un módulo demasiado. – PyRulez
Bueno, sí ... Entiendo que ahora, después de leer [Comentario de Carl] (http://stackoverflow.com/questions/9261490/unnecessary-type-juggling-to-define-data-void-package-void-on-hackage ? noredirect = 1 # comment11678217_9261699) :) –