Произошла ошибка при компиляции qtHaskell - PullRequest
8 голосов
/ 13 марта 2011

После 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'

файл 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 Ответ

9 голосов
/ 14 марта 2011

Беда в том, что

data Qslot x f = Qslot String

так что есть небольшая трудность, чтобы понять, какие x и f могут быть из данного элемента в форме Qslot "Blah blah". Возможно, со времени последней версии qthaskell прошлой осенью произошли небольшие изменения в механизме вывода, который использует GHC.

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

 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 не должен удивляться совсем так много ...

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...