[Haskell-beginners] short function to remove and replace an item

Michael P Mossey mpm at alumni.caltech.edu
Wed Apr 1 20:45:29 EDT 2009

What if I have a list xs, and I want to remove one item and replace it 
with another? The item to remove can be detected by a predicate 
function. The order of the items doesn't matter. How about this:

replaceItem :: (a -> Bool) -> a -> [a] -> [a]
replaceItem p new xs = new : snd (partition p xs)

This will actually replace all items that match the predicate with one 
copy of 'new'. It will also prepend 'new' even if no items match the 

For another challenge, can someone explain to me how to write this in 
point-free style?


More information about the Beginners mailing list