# [Haskell-beginners] removing duplicate tuples (including symmetrical ones)

edgar klerks edgar.klerks at gmail.com
Tue Sep 28 05:44:41 EDT 2010

```Hi Martin,

You have some typos:

import Data.List
removeDuplTuples :: (Eq a) => [(a,a)] -> [(a,a)]
removeDuplTuples [] = []
removeDuplTuples [b] =
[b]
-- using the syntactic sugar for single element in list
removeDuplTuples (x:xs) = nub (if elem (snd x,fst x) xs then
removeDuplTuples xs else [x] ++ removeDuplTuples xs)
--------
You forgot the parenthesis. Parse error in pattern usually means a type in
the input of one of your functions. Nub needs elements that can be equal.

Nub is quitte inefficient, if your elements can be ordered, there is a more
efficient version. It is something like:

[1,4,5,6,7,8,9]

But I haven't test it thoroughly.

Greets,

Edgar

On Tue, Sep 28, 2010 at 11:33 AM, Martin Tomko <martin.tomko at geo.uzh.ch>wrote:

> Hi all,
> I apologize for spamming this forum so frequently, but there is noone I can
> turn to around here...
> I have a list of (a,a) tuples, and am trying something like nub, but also
> matching for symmetrical tuples. I implemented it using the template from
> delete from Prelude. Seems like my typse signature has some troubles (Paarse
> error in pattern) but I am not sure where the problem is.
>
> removeDuplTuples :: [(a,a)] -> [(a,a)]
> removeDuplTuples [] = []
> removeDuplTuples [b] = [b]
>
>         -- using the syntactic sugar for single element in list
> removeDuplTuples x:xs = nub (if elem (snd x,fst x) xs then removeDuplTuples
> xs else [x] ++ removeDuplTuples xs)
>
> I assume the problem lies in elem (snd x,fst x) xs but I am not sure how to
> rewrite it.
>
> Thanks for all help,
> Martin
> _______________________________________________
> Beginners mailing list