haskell types undefined ghc type-kinds

haskell - Indefinido a nivel de tipo



types undefined (2)

A menudo, cuando juego con el código Haskell, apago las cosas con una anotación de tipo y undefined .

foo :: String -> Int foo = undefined

¿Hay un nivel de tipo "indefinido" que pueda usar de manera similar?

(Idealmente, en conjunción con una anotación amable)

type Foo :: * -> * type Foo = Undefined

Pensamiento adicional en el mismo hilo: ¿hay alguna manera de que yo apague instancias de typeclass para los tipos creados de esta manera? ¿Una forma aún más fácil que la siguiente manera teórica?

instance Monad Foo where return = undefined (>>=) = undefined


Esta pregunta fue formulada y contestada hace mucho tiempo; las mejores prácticas han evolucionado desde entonces.

En estos días, en lugar de undefined , para el código de apéndice, debe utilizar orificios escritos y sus firmas de tipo parcial , analógicas y de nivel de tipo .


Puede usar EmptyDataDecls para eliminar un tipo, y con KindSignatures puede darle un tipo:

{-# LANGUAGE EmptyDataDecls, KindSignatures #-} data Foo :: * -> *

También puede apagar la instancia de Monad sin advertencias con esta opción para GHC.

{-# OPTIONS_GHC -fno-warn-missing-methods #-} instance Monad Foo

Y luego no es necesario dejar ninguna implementación para return y >>= .