[Haskell-beginners] removing duplicate tuples (including
edgar.klerks at gmail.com
Tue Sep 28 05:44:41 EDT 2010
You have some typos:
removeDuplTuples :: (Eq a) => [(a,a)] -> [(a,a)]
removeDuplTuples  = 
removeDuplTuples [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:
fmap head.group.sort $ [1,1,1,1,4,4,5,6,6,7,8,9]
But I haven't test it thoroughly.
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,
> Beginners mailing list
> Beginners at haskell.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Beginners