这可能是一个初学者的错误,因为这是我第一次尝试使用Haskell。
我的相关代码段如下:
import SDL (RendererConfig, RendererType(SoftwareRenderer), defaultRenderer)
defaultRendererType :: RendererType
defaultRendererType = case defaultRenderer of
RendererConfig rt _ -> rt
值得注意的是,ghc并没有抱怨RendererConfig
的导入,这使我觉得我使用的是错误的。
RendererConfig
的来源似乎只有两个参数,所以我不确定为什么该匹配在case表达式中不起作用。
data RendererConfig = RendererConfig
{ rendererType :: RendererType
-- ^ The renderer's acceleration mode
, rendererTargetTexture :: Bool
-- ^ The renderer supports rendering to texture
} deriving (Data, Eq, Generic, Ord, Read, Show, Typeable)
修改
我收到的错误消息:
Main.hs:47:3: error:
Not in scope: data constructor `RendererConfig'
Perhaps you want to add `RendererConfig' to the import list
in the import of `SDL' (app/Main.hs:10:1-97).
|
47 | RendererConfig rt _ -> rt
| ^^^^^^^^^^^^^^
答案 0 :(得分:0)
有人向我指出了RendererConfig
has no constructors exported。但是,由于它确实派生了Show
,因此在正确导入之后,我仍然可以得到我想要的东西,并且更简单:rendererType(defaultRenderer)
。