# [Haskell-cafe] matrix question

man manuel.a.castro at gmail.com
Tue Feb 2 11:37:30 EST 2010

```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 <jvranish at gmail.com> wrote:

> 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, 조광래 <kwangraecho at gmail.com> 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 mailing list