[Haskell-cafe] Lists of Lists
Robert Dockins
robdockins at fastmail.fm
Wed Mar 8 14:11:09 EST 2006
On Mar 8, 2006, at 1:29 PM, zell_ffhut wrote:
> Im afraid im baffled again!
>
> Im now trying to add a char to a string of strings (eg - ["434233434"
> "444929192" "909313434"]
>
> Im sure i can use my previous function to help me achive this, but
> i can't
> seem to get it workinging
>
>> charToGrid :: Char -> Position -> Grid -> Grid
>> charToGrid c (row,col) g = concat g (changeValue c(row*9 + col))
>
> Im not sure i should be using concat, as i have to return a grid as
> it was
> given, just with the added char.
As before, the idea is to create a new list with the changes you
want, only now you have a list "two levels deep". So the first thing
to do is to pick out the sublist (row) you want to "change" and
create a new changed sublist (row), and then rebuild your grid. Try
this, it may get you started:
updateList :: (a -> a) -> Int -> [a] -> [a]
updateList f i l = begin ++ (f x : end)
where (begin, x : end) = splitAt i l
BTW, lists aren't very good for these kinds of manipulations. If you
really need an indexable, mutable data structure, try one of
Data.Array.*
Rob Dockins
Speak softly and drive a Sherman tank.
Laugh hard; it's a long way to the bank.
-- TMBG
More information about the Haskell-Cafe
mailing list