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

Jea*_*ouX 2 haskell ghc gtk2hs

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

我尝试在文本条目中设置光标位置

set entree [entryCursorPosition := 5 ]
Run Code Online (Sandbox Code Playgroud)

对应于Type

entryCursorPosition :: EntryClass self => ReadAttr self Int
Run Code Online (Sandbox Code Playgroud)

我有以下错误:

Couldn't match expected type `()' with actual type `Int'
Run Code Online (Sandbox Code Playgroud)

你认为这是一个错误吗?你知道怎么解决吗?

我在我的Debian Wheezy上用GHC 7.4.1使用Gtk2Hs 0.12.3.

最好的祝福.

kos*_*kus 6

正如你所陈述的那样,entryCursorPosition是一个ReadAttr,这意味着它无法写出来.在内部,

type ReadAttr o a = ReadWriteAttr o a ()
Run Code Online (Sandbox Code Playgroud)

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