一个如何从Haskell的SDL绑定中的RenderConfig中提取值

时间:2018-09-12 20:24:43

标签: haskell haskell-sdl

这可能是一个初学者的错误,因为这是我第一次尝试使用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                                                                                                       
   |   ^^^^^^^^^^^^^^     

1 个答案:

答案 0 :(得分:0)

有人向我指出了RendererConfig has no constructors exported。但是,由于它确实派生了Show,因此在正确导入之后,我仍然可以得到我想要的东西,并且更简单:rendererType(defaultRenderer)