On Wed, 22 Dec 2010, gutti wrote:
question 1. u see the two commented lines I tried to get ur original line running, but didn't know how to specify f
What 'f' ? Do you mean matrixfunction f x y = liftMatrix2 (zipVectorWith f) x y ?
## Code ######## import Numeric.LinearAlgebra import Graphics.Plot matrix1 = fromLists [[0 .. 5],[30 .. 35],[50 .. 55]] matrix2 = fromLists [[-1,2],[-3,4],[5,-6]] -- matrix1 = buildMatrix 3 4 ( (r,c) -> fromIntegral r * fromIntegral c) (3><4) -- posPart v = mapVector (\a -> if a>=0 then a else 0) v -- function2map a1 a2 = (\a1 a2 -> if a1>=0 then a2/a1 else a1/a2) matrixfunction x y = liftMatrix2 (zipVectorWith(\a1 a2 -> if a2>=0 then a1 else 0)) x y
matrix3 = matrixfunction matrix1 matrix2 disp = putStr . disps 2 main = do disp matrix1 disp matrix2 -- disp matrix3 mesh matrix1 ######### question 2: - the compiler comes up with some weired data type problem -- ghci has no problem this line : matrixTest_Fail.hs:5:10: Ambiguous type variable `t' in the constraints: `Element t' arising from a use of `fromLists' at matrixTest_Fail.hs:5:10-38 `Num t' arising from the literal `1' at matrixTest_Fail.hs:5:22 Possible cause: the monomorphism restriction applied to the following: matrix2 :: Matrix t (bound at matrixTest_Fail.hs:5:0) Probable fix: give these definition(s) an explicit type signature or use -XNoMonomorphismRestriction ## Code ##### import Numeric.LinearAlgebra import Graphics.Plot matrix1 = fromLists [[1,2],[3,4],[5,6]] matrix2 = fromLists [[1,2],[3,4],[5,6]]
Before type inference can work, you need to fix the type of at least one number of a set of numbers with known equal type. E.g.
matrix1 = fromLists [[1,2],[3,4],[5,6::Double]]
or even better, add a type signature: matrix1 :: Matrix Double _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe