[Haskell-beginners] trouble using the foldl ....
Sunil S Nandihalli
sunil.nandihalli at gmail.com
Thu Aug 11 13:02:58 CEST 2011
I think I figured out.. I had to replace M.member with M.lookup..
Thanks,
Sunil.
On Thu, Aug 11, 2011 at 4:23 PM, Sunil S Nandihalli <
sunil.nandihalli at gmail.com> wrote:
> Hello everybody,
> When I compile a file containing ...
>
> plotAsString::(Integral a)=>[(a,a)]->a->String
> plotAsString locs ans = let xs = map fst locs
> ys = map snd locs
> locsmap = M.fromList (zip locs [0..])
> bufsize=10
> min' = ((\x -> x-bufsize) . minimum)
> max' = ((\x -> x+bufsize) . maximum)
> (bmin@(x0,y0),bmax@(x1,y1)) = ((min' xs,min'
> ys),(max' xs,max' ys))
> plotString = foldl (\curStr newRowId -> (foldl
> (\ccStr newColId -> (ccStr++(case (M.member (newRowId,newColId) locsmap) of
>
> (Just v) -> ("." ++ (show v) ++ ".")
>
> (Nothing) -> " ")))
>
> curStr [y0..y1])) "" [x0..x1]
> in plotString
>
> I get the following error..
>
> main.hs:34:107:
> Couldn't match expected type `Bool' with actual type `Maybe t0'
> In the pattern: Just v
> In a case alternative: (Just v) -> ("." ++ (show v) ++ ".")
> In the second argument of `(++)', namely
> `(case (M.member (newRowId, newColId) locsmap) of {
> (Just v) -> ("." ++ (show v) ++ ".")
> (Nothing) -> " " })'
>
> can somebody help?
>
> Thanks,
> Sunil.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/beginners/attachments/20110811/55e2ff5c/attachment.htm>
More information about the Beginners
mailing list