Son*_*eng 8 windows qt haskell
在qmake和mingw32-make从这些指令成功后,我执行runhaskell Setup.hs build
,我收到以下错误:
[651 of 662] Compiling Qtc.Core.Attributes ( Qtc\Core\Attributes.hs, dist\build\Qtc\Core\Attributes.o )
Qtc\Core\Attributes.hs:584:13:
Could not deduce (Qstt a (QDialogSc b))
arising from a use of `slotReject''
from the context (Qstt a (QDialogSc b1))
bound by the instance declaration
at Qtc\Core\Attributes.hs:582:10-52
Possible fix:
add (Qstt a (QDialogSc b)) to the context of
the instance declaration
or add an instance declaration for (Qstt a (QDialogSc b))
In the expression: slotReject'
In an equation for `reject'': reject' = slotReject'
In the instance declaration for `QsaSlotReject a'
Run Code Online (Sandbox Code Playgroud)
Attributes.hs文件(第578 - 583行):
class QsaSlotReject w where
slotReject', reject' :: (Qslot w (w -> ()), (w -> ()))
instance (Qstt a (QDialogSc b)) => QsaSlotReject (a) where
slotReject' = (Qslot "reject()", \_ -> ())
reject' = slotReject'
Run Code Online (Sandbox Code Playgroud)
环境 :
顺便说一句,我在这个过程中遇到了两次内存不足,但我猜这没关系.
问题来自于这个事实
data Qslot x f = Qslot String
Run Code Online (Sandbox Code Playgroud)
所以从Qslot"Blah blah"形式的给定项目推断x和f可能有点困难.自从去年秋天qthaskell的最后一个版本上升以来,GHC使用的推理机制也许发生了微妙的变化.
在任何情况下,它似乎编译,带有一些好奇的警告,并且示例工作,如果你替换
instance (Qstt a (QDialogSc b)) => QsaSlotReject (a) where
slotReject' = (Qslot "reject()", \_ -> ())
reject' = slotReject'
Run Code Online (Sandbox Code Playgroud)
同
instance (Qstt a (QDialogSc b)) => QsaSlotReject (a) where
slotReject' = (Qslot "reject()", \_ -> ())
reject' = (Qslot "reject()", \_ -> ())
Run Code Online (Sandbox Code Playgroud)
这样GHC简化版,不得不惊叹相当之多......
必须有一些东西可以使事情更精确.我不知道eta减少警告是否会在以后系统地开始出现,这与此线路有关.
归档时间: |
|
查看次数: |
296 次 |
最近记录: |