Consider the following sequence of functions
that replace a single element in an n-dimensional
list:

replace0 :: a -> a -> a
replace0 = const

replace1 :: Int -> a -> [a] -> [a]
replace1 i0 x xs
| null t    = h
| otherwise = h ++ (replace0 x (head t) : tail t)
where (h, t) = splitAt i0 xs

replace2 :: Int -> Int -> a -> [[a]] -> [[a]]
replace2 i0 i1 x xs
| null t    = h
| otherwise = h ++ (replace1 i1 x (head t) : tail t)
where (h, t) = splitAt i0 xs

etc.

Generalize this using type classes.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to