无法将预期类型“()”与实际类型“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)

希望对您有所帮助