Trying to learn Haskell. I am trying to write a simple function to remove a number from a list without using built-in function (delete…I think). For the sake of simplicity, let’s assume that the input parameter is an Integer and the list is an Integer list. Here is the code I have, Please tell me what’s wrong with the following code
areTheySame :: Int -> Int-> [Int]
areTheySame x y | x == y = []
| otherwise = [y]
removeItem :: Int -> [Int] -> [Int]
removeItem x (y:ys) = areTheySame x y : removeItem x ys
The others are right that the problem is the
:operator. I would say that yourareTheySamefunction that returns a list is the wrong approach anyway, though. Rather than switch to the++operator, a better implementation of that function would be:As you can see, this is a pretty simple implementation. Also, consing like this is much less taxing for your program than appending a bunch of lists together. It has other benefits as well, such as working lazily.