unique

 uniq [1,2,3,2,4,5,4] where uniq (x:xs)|elem x xs=uniq $ filter (/=x) xs|otherwise=x:(uniq xs); uniq []=[]

内包表記で考え直しているときに本当のuniqは

uniq [1,2,3,2,4,5,4] where uniq (x:xs) = x:(uniq [y|y<-xs,y/=x]) ; uniq [] = []

と思ったが、まあ、がんばってみるとして

uniq [1,2,3,2,4,5,4] where uniq (x:xs)|elem x xs = uniq [y|y<-xs,y/=x]| otherwise = x:(uniq [y|y<-xs,y/=x]) ; uniq [] = []

内包表記らしくないな…まだアプローチの方法があるんだろうか…