无法将预期类型`()'与实际类型`Int'匹配

时间:2015-02-03 21:18:04

标签: haskell ghc gtk2hs

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

我尝试使用

在文本条目中设置光标位置
set entree [entryCursorPosition := 5 ]

对应于Type

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。

最诚挚的问候。

2 个答案:

答案 0 :(得分:6)

正如您所说,entryCursorPositionReadAttr,这意味着无法写入。在内部,

type ReadAttr o a = ReadWriteAttr o a ()

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

答案 1 :(得分:0)

我犯了一个错误entryCursorPosition只读 attribut,无法设置。

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

editableSetPosition entry (-1)

希望它会有所帮助