[Haskell-cafe] want to post haskell question

Ozgur Akgun ozgurakgun at gmail.com
Tue Feb 2 04:51:32 EST 2010


Hi,

Try to understand this:

type Matrix = [[Double]]

multSM :: Double -> Matrix -> Matrix
multSM d m = map (\ i -> map (\ j -> d*j ) i) m

Now try this for multSM (instead of the above definition)

multSM = map . map . (*)

Hope it helps,


On 2 February 2010 09:35, 조광래 <kwangraecho at gmail.com> wrote:

>
> hi I have a question about haskell coding.
>
> Matrices
>
> One of many ways to define matrices in Haskell is the list of matrix rows,
> where a row is a list of double precision oating point numbers:
>
> type Matrix=[[Double]]
>
> Using this type you should define the following functions (definition of
> dim is given as an inspirational example).
>
> dim :: Matrix -> (Int,Int) --returns matrix dimension (number of rows and columns)
> dim m = if (not.isMatrix) m then error "Not a matrix" else (length m, length (head m))
>
> isMatrix :: Matrix -> Bool --checks whether all rows have the same length
> isMatrix m =  and [length (head m) == length a | a <- m]
>
> I have done upto here and I am stuck on multSM.
>
> multSM :: Double -> Matrix -> Matrix --multiplies a scalar and a matrix
>
> when I do:
>
> multSM  d m = [[(b*a)| b<-[d], a<-(head m)]] or [map (*d) (head m)]
>
> ...I get (using Hugs):
>
> Main> multSM 3 [[2,3,4],[1,3,4],[6,3,0]] [[6.0,9.0,12.0]]
>
> So I solve 3 [2,3,4] but I do not know how to get the rest 3
> [[1,3,4],[6,3,0].
>
> Please help me on this problem.
>
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
>


-- 
Ozgur Akgun
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20100202/28ad3802/attachment.html


More information about the Haskell-Cafe mailing list