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, le
The :
operator doesn't do what you think it does:
(:) :: a -> [a] -> [a]
It takes an item of type a
and adds it to the beginning of a list of type a
. You're using it to join two lists of type a
. For that, you need to use ++
:
(++) :: [a] -> [a] -> [a]
Also, if you make a recursive function, it needs an ending condition. So try this:
removeItem _ [] = []
removeItem x (y:ys) = areTheySame x y ++ removeItem x ys
That way, when you get to the end of the list, the function will stop recursing.