문제

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
도움이 되었습니까?

해결책 2

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 with KindSignatures you can give it a kind:

{-# LANGUAGE EmptyDataDecls, KindSignatures #-}

data Foo :: * -> *

You can also stub out the Monad instance without warnings with this option to GHC.

{-# OPTIONS_GHC -fno-warn-missing-methods #-}

instance Monad Foo

And then you don't need to leave any implementation for return and >>=.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top