Return unique tuples from a list of tuples in Haskell -


i have list of tuples of form [(a,b),(b,a),(d,c),(e,f),(c,d),(f,e)]. how return list [(a,b),(c,d),(e,f)]? solutions i've found remove repeated tuples, , solutions can think of naive o(n^2) solutions. there way efficiently?

if type of components of pairs in class ord, can in o(n log n) time:

import data.list (sort, group)  sortpair        :: ord => (a, a) -> (a, a) sortpair (x, y)   | x <= y      =  (x, y)   | otherwise   =  (y, x)  uniques :: ord => [(a, a)] -> [(a, a)] uniques =  map head . group . sort . map sortpair 

so, if define

data t = | b | c | d | e | f deriving (eq, ord, show) 

we have, example:

> uniques [(a,b),(b,a),(d,c),(e,f),(c,d),(f,e)] [(a,b),(c,d),(e,f)] 

Comments

Popular posts from this blog

c# - Send Image in Json : 400 Bad request -

jquery - Fancybox - apply a function to several elements -

An easy way to program an Android keyboard layout app -