Haskell 不能';不匹配预期类型“()';实际类型为'Int';

Haskell 不能';不匹配预期类型“()';实际类型为'Int';,haskell,ghc,gtk2hs,Haskell,Ghc,Gtk2hs,我对Haskell和Gtk2Hs有一个奇怪的错误 我尝试使用 set entree [entryCursorPosition := 5 ] 与类型相对应 entryCursorPosition :: EntryClass self => ReadAttr self Int 我有以下错误: Couldn't match expected type `()' with actual type `Int' 你认为这是虫子吗?你知道怎么解决吗 我正在使用Gtk2Hs 0.12.3对我的带有G

我对Haskell和Gtk2Hs有一个奇怪的错误

我尝试使用

set entree [entryCursorPosition := 5 ]
与类型相对应

entryCursorPosition :: EntryClass self => ReadAttr self Int
我有以下错误:

Couldn't match expected type `()' with actual type `Int'
你认为这是虫子吗?你知道怎么解决吗

我正在使用Gtk2Hs 0.12.3对我的带有GHC 7.4.1的Debian哮喘病进行治疗


致以最诚挚的问候。

正如您所说,
入口光标位置是一个
ReadAttr
,这意味着它无法写入。内部,

type ReadAttr o a = ReadWriteAttr o a ()

因此,
ReadAttr
被实现为具有“读取类型”
a
和“写入类型”
()
的属性。这解释了您看到的错误消息,因为您试图将其设置为
Int
而不是
()

我犯了一个错误
entryCursorPosition
是一个只读属性,无法设置

设置条目中光标位置的正确功能是:

editableSetPosition entry (-1)
希望它能有所帮助