Haskell SDL绑定导出名为SDLKey的枚举类型.但是Enum实例以一种奇怪的方式声明:
instance Enum SDLKey Word32 where
fromEnum SDLK_UNKNOWN = 0
fromEnum SDLK_FIRST = 0
fromEnum SDLK_BACKSPACE = 8
...
Run Code Online (Sandbox Code Playgroud)
SDLKey不接受任何类型参数,这怎么不是语法错误?Haskell报告说SDLKey不是Enum的实例,那么Enum函数的定义类型是什么?而且,最重要的是,给定SDLKey,如何在其上调用Enum函数?
来自hackage的源代码:http://hackage.haskell.org/packages/archive/SDL/0.6.2/doc/html/src/Graphics-UI-SDL-Keysym.html#SDLKey