2011-03-13 2 views
8

После QMAKE и mingw32-сделать из these инструкции преуспевает, и я исполню runhaskell Setup.hs build, я получаю следующее сообщение об ошибке:Произошла ошибка во время компиляции qtHaskell

[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' 

файл 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' 

Окружающая среда:

  • Windows 7
  • Haskell Platform 2011.2.0
  • Qt SDK 4,7

Кстати, я обнаружил из памяти дважды в этом процессе, но я думаю, что не имеет значения.

+1

Я изучаю английский язык, и, к сожалению, я не могу использовать его хорошо. – SongPengpeng

ответ

9

Проблема исходит из того, что

data Qslot x f = Qslot String 

, так что это немного сложности выводя, что х и е может быть от данного элемента вида Qslot «Бла-бла». Возможно, произошло небольшое изменение в механизме вывода GHC, поскольку последняя версия qthaskell поднялась прошлой осенью.

В любом случае, кажется, компилировать, с некоторыми любопытными предупреждений, а также примеры работы, если заменить

instance (Qstt a (QDialogSc b)) => QsaSlotReject (a) where 
    slotReject' = (Qslot "reject()", \_ ->()) 
    reject' = slotReject' 

с

instance (Qstt a (QDialogSc b)) => QsaSlotReject (a) where 
    slotReject' = (Qslot "reject()", \_ ->()) 
    reject' = (Qslot "reject()", \_ ->()) 

Таким образом GHC does't должны задаться вопросом довольно столько ...

Должно быть что-то, что бы уточнить детали. Я не знаю, уменьшают ли предупреждения eta предупреждения, которые начнут возникать систематически позже в этой строке.

+0

Спасибо. Ты спас мой день ... –

Смежные вопросы