
It won't compile because the type of (:) is (:) :: a -> [a] -> [a]. It
takes an element on its left side. take returns a list (take :: Int ->
[a] -> [a]).
Instead of using the (:) operator, use the (++) operator. It appends a
list to another.
So, your function should be: myremove x s = (take (s-1) x) ++ (drop (s+1) x)
But it won't do what you're expecting it to do because, drop 3
"doaltan" would remove doa" and give you "lo". It removes the first 3
elements. So, your drop (s+1) would remove (3+1), elements, i.e,
"doal". Change it to drop s.
So, your final function should be:
myremove x s = (take (s-1) x) ++ (drop s x)
And by the way, welcome to Haskell!
On Sun, Feb 19, 2012 at 11:30 PM, bahadýr altan
Hello. I'm trying to write a code which deletes the wanted element in a list. Like this : myremove "doaltan" 3 = "doltan". I wrote the code below but it doesn't even compile. Could you help me with fixing the code? Thanks!
myremove x s = (take (s-1) x):(drop (s+1) x)
_______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners
-- Warm Regards, AbdulSattar Mohammed