Если бы кто-нибудь мог помочь мне разобраться в этой проблеме с компиляцией monadiccp
, я был бы признателен. Есть проблема с печатанием, которую я не могу понять.
шага для воспроизведения
- у вас установлена достаточно свежая версия ghc; У меня 7.0.3
cabal install Monatron
cabal unpack monadiccp
ghci Control/CP/ComposableTransformers.hs
Я получаю эту ошибку,
Control/CP/ComposableTransformers.hs:246:31:
Couldn't match expected type `Tree solver0 a1 -> Tree solver0 a1'
with actual type `forall a2. Tree solver a2 -> Tree solver a2'
Expected type: Tree solver0 a1 -> Tree solver0 a1
Actual type: Bound solver
In the second argument of `BBP', namely `bound''
In the second argument of `($)', namely `BBP (v + 1) bound''
Failed, modules loaded: Control.CP.Transformers, Control.CP.SearchTree, Control.CP.Solver, Control.CP.Queue, Control.CP.Debug, Control.CP.PriorityQueue, Control.Mixin.Mixin.
Вот странное наблюдение. Если кто-то изменит строку, о которой идет речь,
continue $ BBP (v + 1) bound'
к типу, указанному в ошибке,
continue $ BBP (v + 1) (undefined :: Tree solver0 a1 -> Tree solver0 a1)
тогда это работает, но если вместо него ввести фиктивную переменную,
let x = (undefined :: Tree solver0 a1 -> Tree solver0 a1)
continue $ BBP (v + 1) x
ошибки типов становятся еще более непонятными (мне, вероятно, нужно научиться печатать формально),
Control/CP/ComposableTransformers.hs:247:19:
Couldn't match type `a10' with `a1'
because type variable `a1' would escape its scope
This (rigid, skolem) type variable is bound by
a type expected by the context: Tree solver a1 -> Tree solver a1
The following variables have types that mention a10
x :: Tree solver a10 -> Tree solver a10
(bound at Control/CP/ComposableTransformers.hs:246:12)
In the second argument of `BBP', namely `x'
In the second argument of `($)', namely `BBP (v + 1) x'
In the expression: continue $ BBP (v + 1) x
любая информация о ситуации будет наиболее ценной (включая решение проблемы). Я недавно отправил электронное письмо разработчику, но он не вернулся.