Gtk2Hs:找不到现有功能

Gtk2Hs : Existing function not found

我对 Gtk2Hs 有疑问,我想设置一个 cellRenderer 可激活。 为此,我需要使用 :

将 属性 cellMode 设置为 CellRendererModeActivatable
set render [ cellMode:= CellRendererModeActivatable ]

但是编译的时候出现如下错误

Not in scope: data constructor `CellRendererModeActivatable'

我在装有 GHC 7.4.1 的 Debian Wheezy 上使用 Gtk2Hs 0.12.3。

我在 Hackage 中查看了构造函数是否存在(在文档的正确版本中)并且...... 确实如此

我试图显式加载模块

import Graphics.UI.Gtk.ModelView.CellRenderer

编译错误还是一样

你知道错误是从哪里来的吗?

这看起来像是旧 Haskell 库中的错误:来自其源代码

module Graphics.UI.Gtk.ModelView.CellRenderer (
  -- snip
  CellRendererMode,

上面是不是导出构造函数。较新的版本:

module Graphics.UI.Gtk.ModelView.CellRenderer (
  -- snip
  CellRendererMode(..),

您可以尝试将 Haskell 库更新到较新的版本。那应该可以解决它。


备选。即使在旧版本中,该类型也有一个 Enum 实例,因此您可以使用 toEnum 1 :: CellRendererMode 作为一种快速而肮脏的解决方法 而不是构造函数。

data CellRendererMode = CellRendererModeInert         -- 0
                      | CellRendererModeActivatable   -- 1
                      | CellRendererModeEditable      -- 2
                      deriving (Enum,Eq)