[Haskell-beginners] A simple remove function
AbdulSattar Mohammed
codingtales at gmail.com
Sun Feb 19 19:25:02 CET 2012
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 <doaltan at yahoo.co.uk> wrote:
> 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 at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners
>
--
Warm Regards,
AbdulSattar Mohammed
More information about the Beginners
mailing list