
http://hackage.haskell.org/package/hmatrix-0.8.1.1
it wraps gls, blas and lapack (so you need to install the libraries).
On Tue, Feb 2, 2010 at 4:08 PM, Job Vranish
I have a little haskell matrix library for fixed sized matricies on github: http://github.com/jvranish/VectorMatix which I've just realized is horribly out of date...I'll update it tonight and probably push it to hackage too...
but if you're really want to stick with the [[Double]] type, you can add a Foldable and Traversable instance to ZipLists and do this:
instance Foldable ZipList where foldMap f (ZipList x) = foldMap f x
instance Traversable ZipList where traverse f (ZipList x) = ZipList <$> traverse f x
toZipList a = ZipList $ fmap ZipList a fromZipList a = getZipList $ fmap getZipList a
multMM :: (Num a) => [[a]] -> [[a]] -> [[a]] multMM a b = fromZipList $ multMMA (toZipList a) (toZipList b)
-- I about fell off my chair when I discovered you could do matrix multiplication like this: multMMA :: (Traversable f, Num a, Applicative f, Applicative row, Applicative col, Traversable col) => row (f a) -> f (col a) -> row (col a) multMMA a b = traverse (liftA2 dot a . pure) (sequenceA b)
dot :: (Foldable t, Num a, Applicative t) => t a -> t a -> a dot a b = sum $ pure (*) <*> a <*> b
My matrix library uses a Gaussian elimination function (which operates on lists) as well as det and inv functions which should be easily adaptable to work on lists.
I'll make sure to push the updated code up tonight.
- Job
On Tue, Feb 2, 2010 at 7:15 AM, 조광래
wrote: define functions
type Matrix=[[Double]]
multMM :: Matrix -> Matrix -> Matrix --multiplies two matrices det :: Matrix -> Double --computes the determinant of a matrix inv :: Matrix -> Matrix --inverts a matrix
i stuck on those problems
can any one help me out?
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
-- happy hacking... man