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, 조광래 <kwangrae...@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@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe > > -- Ozgur Akgun
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe