在类型级别未定义 [英] Undefined at the type level
问题描述
通常当我使用Haskell代码时,我会用类型注释来存储,而 undefined
。
Often when I'm playing with Haskell code, I stub things out with a type annotation and undefined
.
foo :: String -> Int
foo = undefined
是否有可以使用的类型级别undefined以类似的方式吗?
Is there a type-level "undefined" that I could use in a similar way?
(理想情况下,结合一种注释)
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
推荐答案
可以使用 EmptyDataDecls
存根出一个类型,并与 KindSignatures
你可以给它一种:
You can use EmptyDataDecls
to stub out a type, and with KindSignatures
you can give it a kind:
{-# LANGUAGE EmptyDataDecls, KindSignatures #-}
data Foo :: * -> *
您也可以将 Monad
没有警告的实例使用GHC的这个选项。
You can also stub out the Monad
instance without warnings with this option to GHC.
{-# OPTIONS_GHC -fno-warn-missing-methods #-}
instance Monad Foo
然后您不需要任何实现 return
和>> =
。
And then you don't need to leave any implementation for return
and >>=
.
这篇关于在类型级别未定义的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!