Often when I'm playing with Haskell code, I stub things out with a type annotation and undefined
.
foo :: String -> Int
foo = undefined
Is there a type-level "undefined" that I could use in a similar way?
(Ideally, in conjunction with a kind annotation)
type Foo :: * -> *
type Foo = Undefined
Further thought on the same thread: is there a way for me to stub out typeclass instances for types created this way? An even easier way than the following theoretical way?
instance Monad Foo where
return = undefined
(>>=) = undefined
This question was asked and answered a long time ago; best practices have evolved since.
These days, instead of
undefined
, for stubbing out code you should be using typed holes, and their type-level analogue, partial type signatures.You can use
EmptyDataDecls
to stub out a type, and withKindSignatures
you can give it a kind:You can also stub out the
Monad
instance without warnings with this option to GHC.And then you don't need to leave any implementation for
return
and>>=
.