[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: numeric-quest 0.1.1.3 fails to build with GHC 7.4



On Sun, 2012-02-05 at 13:15 +0000, Iulian Udrea wrote:
> Hello.
> 
> It appears that numeric-quest 0.1.1.3 fails[0] to build with GHC 7.4.
> The reason for this is because the Num class does no longer imply Eq or
> Show. You can find more information in the GHC 7.4 release notes[1].
> 
> The attached two patches fixes this build failure. We have already
> applied these to Debian. If everything looks fine to you, then please
> apply them and upload a new version to hackage.
> 
> Ta,
> Iulian
> 
> [0]
> http://hackage.haskell.org/packages/archive/numeric-quest/0.1.1.3/logs/failure/ghc-7.4
> [1]
> http://www.haskell.org/ghc/docs/7.4.1/html/users_guide/release-7-4-1.html
> 

Attached is a patch with minimised Eq constraints.

Ta,
Iulian
Description: Num does no longer imply Eq or Show. See GHC 7.4.1 release notes.
Author: Iulian Udrea <iulian@physics.org>

--- a/Roots.hs
+++ b/Roots.hs
@@ -76,7 +76,7 @@
       where
           u y a b = a + b*y
 
-polynomial_derivative :: Num a => [a] -> [a]
+polynomial_derivative :: (Eq a, Num a) => [a] -> [a]
 polynomial_derivative as
       --
       -- List of coefficients for derivative of polynomial
unchanged:
--- a/QuantumVector.lhs
+++ b/QuantumVector.lhs
@@ -1129,7 +1129,7 @@
 >     showsPrec n (j :<+ k) = showsPrec n j . showString " + " . showsPrec n k
 
 
-> showsScalar :: (RealFloat t) => Int -> Complex t -> String -> String
+> showsScalar :: (Show t, RealFloat t) => Int -> Complex t -> String -> String
 > showsScalar n x@(a :+ b)
 >     | b == 0    = showsPrec n a . showString " "
 >     | otherwise = showString "(" .showsPrec n x . showString ") "
unchanged:
--- b/Orthogonals.lhs
+++ b/Orthogonals.lhs
@@ -641,7 +641,7 @@
 
 <pre>
 
-> orthogonals :: (Scalar a, Fractional a) => [a] -> [[a]]
+> orthogonals :: (Eq a, Scalar a, Fractional a) => [a] -> [[a]]
 > orthogonals x =
 >       --
 >       -- List of (n-1) linearly independent vectors,
@@ -661,7 +661,7 @@
 >           next i = if (i+1) == k then (i+2) else (i+1)
 >           k = length (takeWhile (== 0) x) -- first non-zero component of x
 
-> gram_schmidt :: (Scalar a, Fractional a) => [[a]] -> [a] -> [a]
+> gram_schmidt :: (Eq a, Scalar a, Fractional a) => [[a]] -> [a] -> [a]
 > gram_schmidt a u =
 >       --
 >       -- Projection of vector | u > on some direction
@@ -757,7 +757,7 @@
         Below is a function that does that for any problem size:
 <pre>
 
-> one_ket_triangle :: (Scalar a, Fractional a) => [[a]] -> [a] -> [([a],a)]
+> one_ket_triangle :: (Eq a, Scalar a, Fractional a) => [[a]] -> [a] -> [([a],a)]
 > one_ket_triangle a b
 >     --
 >     -- List of pairs: (p, q) representing
@@ -880,7 +880,7 @@
         It follows that matrix X is an inverse of A; that is X = A<sup>-1</sup>.
 <pre>
 
-> inverse :: (Scalar a, Fractional a) => [[a]] -> [[a]]
+> inverse :: (Eq a, Scalar a, Fractional a) => [[a]] -> [[a]]
 > inverse a = many_kets_solution a (unit_matrix (length a))
 >       --
 >       -- List of columns of inverse of matrix A
@@ -951,7 +951,7 @@
 
 <pre>
 
-> factors_QR :: (Fractional a, Scalar a) => [[a]] -> ([[a]],[[a]])
+> factors_QR :: (Eq a, Fractional a, Scalar a) => [[a]] -> ([[a]],[[a]])
 > factors_QR a =
 >       --
 >       -- A pair of matrices (Q, R), such that
@@ -1201,7 +1201,7 @@
 >       where
 >           (q,r) = factors_QR a
 
-> iterated_eigenvalues :: (Scalar a1, Fractional a1, Num a) => [[a1]] -> a -> [[a1]]
+> iterated_eigenvalues :: (Eq a1, Scalar a1, Fractional a1, Eq a, Num a) => [[a1]] -> a -> [[a1]]
 > iterated_eigenvalues a n
 >       --
 >       -- List of vectors representing
@@ -1215,7 +1215,7 @@
 >       | otherwise = (diagonals a)
 >                     : iterated_eigenvalues (similar_to a) (n-1)
 
-> eigenvalues :: (Scalar a1, Fractional a1, Num a) => [[a1]] -> a -> [a1]
+> eigenvalues :: (Eq a1, Scalar a1, Fractional a1, Eq a, Num a) => [[a1]] -> a -> [a1]
 > eigenvalues a n
 >       --
 >       -- Eigenvalues of matrix A
@@ -1586,7 +1586,7 @@
 
 <pre>
 
-> eigenkets :: (Scalar a, Fractional a) => [[a]] -> [a] -> [[a]]
+> eigenkets :: (Eq a, Scalar a, Fractional a) => [[a]] -> [a] -> [[a]]
 > eigenkets a u
 >       --
 >       -- List of eigenkets of a square matrix A
@@ -1784,7 +1784,7 @@
         where n = 20, etc.
 
 
-> unit_matrix :: Num a => Int -> [[a]]
+> unit_matrix :: (Eq a, Num a) => Int -> [[a]]
 > unit_matrix m =
 >       --
 >       -- Unit square matrix of with dimensions m x m
unchanged:
--- b/Orthogonals.lhs
+++ b/Orthogonals.lhs
@@ -783,7 +783,7 @@
 
 <pre>
 
-> one_ket_solution :: (Fractional a, Scalar a) => [[a]] -> [a] -> [a]
+> one_ket_solution :: (Eq a, Fractional a, Scalar a) => [[a]] -> [a] -> [a]
 > one_ket_solution a b =
 >     --
 >     -- List representing vector |x>, which is
@@ -809,7 +809,7 @@
         of just one:
 <pre>
 
-> many_kets_triangle :: (Scalar a, Fractional a) => [[a]] -> [[a]] -> [([a],[a])]
+> many_kets_triangle :: (Eq a, Scalar a, Fractional a) => [[a]] -> [[a]] -> [([a],[a])]
 > many_kets_triangle a b
 >     --
 >     -- List of pairs: (p, q) representing
@@ -838,7 +838,7 @@
         several ket-vectors on the right hand side.
 <pre>
 
-> many_kets_solution :: (Scalar a, Fractional a) => [[a]] -> [[a]] -> [[a]]
+> many_kets_solution :: (Eq a, Scalar a, Fractional a) => [[a]] -> [[a]] -> [[a]]
 > many_kets_solution a b =
 >     --
 >     -- List of columns of matrix X, which is
@@ -979,7 +979,7 @@
 
 <pre>
 
-> determinant :: (Fractional a, Scalar a) => [[a]] -> a
+> determinant :: (Eq a, Fractional a, Scalar a) => [[a]] -> a
 > determinant a =
 >    let (q,r) = factors_QR a
 >    -- matrix Q is not normed so we have to respect the norms of its rows
@@ -1188,7 +1188,7 @@
 <pre>
 
 
-> similar_to :: (Fractional a, Scalar a) => [[a]] -> [[a]]
+> similar_to :: (Eq a, Fractional a, Scalar a) => [[a]] -> [[a]]
 > similar_to a =
 >       --
 >       -- List of columns of matrix A1 similar to A
@@ -1683,7 +1683,7 @@
         follows.
 <pre>
 
-> eigenket' :: (Scalar a, Fractional a) => [[a]] -> a -> a -> [a] -> [a]
+> eigenket' :: (Eq a, Scalar a, Fractional a) => [[a]] -> a -> a -> [a] -> [a]
 > eigenket' a alpha eps x' =
 >       --
 >       -- Eigenket of matrix A corresponding to eigenvalue alpha
only in patch2:
unchanged:
--- a/EigensystemNum.hs
+++ b/EigensystemNum.hs
@@ -27,7 +27,7 @@
 specRadApprox :: (Fractional a, Ord a) => [[a]] -> [a]
 specRadApprox = map getGrowth . powerIter
 
-eigenValuesApprox :: (Scalar a, Fractional a) => [[a]] -> [[a]]
+eigenValuesApprox :: (Eq a, Scalar a, Fractional a) => [[a]] -> [[a]]
 eigenValuesApprox = map diagonals . iterate similar_to
 
 limit :: (Num a, Ord a) => a -> [a] -> a

Attachment: signature.asc
Description: This is a digitally signed message part


Reply to: