On Fri, Dec 21, 2012 at 01:45:04PM +0000, Simon Peyton-Jones wrote:
> OK, do this
>
> * {-# LANGUAGE ScopedTypeVariables, MonoLocalBinds #-}
>
> * import Categs( Domains1 )
>
> * Add type sig for dP'
> dP' :: (LinSolvRing (Pol a), CommutativeRing a) => Domains1 (Pol a)
>
> Then it compiles.
>
> You are very close to the edge of what can be done!
It works. Thank you.
There remains only a single unlucky module: T_cubeext.
The test demotest/Main works with exception of T_cubeext,
but I need T_cubeext.cubicExt to work.
Please, continue the test with
make install
cd demotest
ghc $doconCpOpt --make Main
(for $doconCpOpt =
-fwarn-unused-matches -fwarn-unused-binds -fwarn-unused-imports
-fno-warn-overlapping-patterns -XRecordWildCards -XNamedFieldPuns
-XFlexibleContexts -XMultiParamTypeClasses -XUndecidableInstances
-XTypeSynonymInstances -XFlexibleInstances -XOverlappingInstances
).
It reports
------------------------------------------------------------------
...
T_cubeext.hs:102:20:
Could not deduce (k ~ k1)
from the context (Field k, FactorizationRing (UPol k))
bound by the type signature for
cubicExt :: (Field k, FactorizationRing (UPol k)) =>
k -> k -> Domains1 k -> (Domains1 (E k), [E k], k
-> E k)
at T_cubeext.hs:(79,13)-(80,69)
or from (Field k1, FactorizationRing (UPol k1))
bound by the type signature for
unA :: (Field k1, FactorizationRing (UPol k1)) => UPol k1
at T_cubeext.hs:101:9-56
`k' is a rigid type variable bound by
the type signature for
cubicExt :: (Field k, FactorizationRing (UPol k)) =>
k -> k -> Domains1 k -> (Domains1 (E k), [E k], k -> E
k)
at T_cubeext.hs:79:13
`k1' is a rigid type variable bound by
the type signature for
unA :: (Field k1, FactorizationRing (UPol k1)) => UPol k1
at T_cubeext.hs:101:9
Expected type: Domains1 k1
Actual type: Domains1 k
In the second argument of `cToUPol', namely `dK'
In the expression: cToUPol "d" dK unK
In an equation for `unA': unA = cToUPol "d" dK unK
T_cubeext.hs:105:7:
Overlapping instances for LinSolvRing (UPol k1)
arising from a use of `upEucRing'
Matching instances:
instance [overlap ok] EuclideanRing a => LinSolvRing (UPol a)
-- Defined in `docon-2.12:Pol2_'
instance [overlap ok] (LinSolvRing (Pol a), CommutativeRing a) =>
LinSolvRing (UPol (Pol a))
...
------------------------------------------------------------------
I tried {-# LANGUAGE ScopedTypeVariables, MonoLocalBinds #-},
and setting type signatures in various parts in cubicExt.
But this does not help.
There is another point. In
``cubicExt :: (Field k, FactorizationRing (UPol k)) => ...''
the part ``, FactorizationRing (UPol k)'' (1)
was always considered as parasitic. ghc-7.4.1 needs (1) to work,
and at least ghc-7.4.1 does compile the test.
I thought, may be, the future compilers will allow to omit this part.
At least it is desirable for ghc-7.6.2 to do the test in any variant,
with (1) or without it.
Regards,
------
Sergei
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs