无法将预期类型“()”与实际类型“Int”相匹配
Couldn't match expected type `()' with actual type `Int'
我在使用 Haskell 和 Gtk2Hs 时遇到一个奇怪的错误。
我尝试使用
设置文本条目中的光标位置
set entree [entryCursorPosition := 5 ]
对应类型
entryCursorPosition :: EntryClass self => ReadAttr self Int
我有以下错误:
Couldn't match expected type `()' with actual type `Int'
您认为这是一个错误吗?你知道怎么解决吗?
我在装有 GHC 7.4.1 的 Debian Wheezy 上使用 Gtk2Hs 0.12.3。
此致。
正如您所说,entryCursorPosition
是一个 ReadAttr
,这意味着它不能被写入。在内部,
type ReadAttr o a = ReadWriteAttr o a ()
因此 ReadAttr
被实现为具有 "read type" a
和 "write type" ()
的属性。这解释了您看到的错误消息,因为您尝试将其设置为 Int
而不是 ()
.
我弄错了 entryCursorPosition
是 只读 属性,无法设置。
在条目中设置光标位置的正确函数是:
editableSetPosition entry (-1)
希望对您有所帮助
我在使用 Haskell 和 Gtk2Hs 时遇到一个奇怪的错误。
我尝试使用
设置文本条目中的光标位置set entree [entryCursorPosition := 5 ]
对应类型
entryCursorPosition :: EntryClass self => ReadAttr self Int
我有以下错误:
Couldn't match expected type `()' with actual type `Int'
您认为这是一个错误吗?你知道怎么解决吗?
我在装有 GHC 7.4.1 的 Debian Wheezy 上使用 Gtk2Hs 0.12.3。
此致。
正如您所说,entryCursorPosition
是一个 ReadAttr
,这意味着它不能被写入。在内部,
type ReadAttr o a = ReadWriteAttr o a ()
因此 ReadAttr
被实现为具有 "read type" a
和 "write type" ()
的属性。这解释了您看到的错误消息,因为您尝试将其设置为 Int
而不是 ()
.
我弄错了 entryCursorPosition
是 只读 属性,无法设置。
在条目中设置光标位置的正确函数是:
editableSetPosition entry (-1)
希望对您有所帮助