Haskell-如何在haskell的列表中倒退?

Cra*_*ild 2 haskell

我需要为我的一个分配编写一个简单的函数,它应该删除给定列表中的所有重复项,除了列表中第一个出现的元素.这是我写的:

remDup :: [Int]->[Int]
remDup []=[]
remDup (x:xs)
   | present x xs==True = remDup xs
   | otherwise = x:remDup xs
   where
   present :: Int->[Int]->Bool
   present x [] = False
   present x (y:ys)
       | x==y =True
       | otherwise = present x ys 
Run Code Online (Sandbox Code Playgroud)

但是这个代码删除了重复项,除了元素的最后一次出现.也就是说,如果给定的列表是[1,2,3,3,2]生成[1,3,2]而不是[1,2,3].怎么做反过来呢?

Eri*_*ikR 10

这个想法怎么样:

remDup [] = []
remDup (x:xs) = x :  remDup ( remove x xs )
Run Code Online (Sandbox Code Playgroud)

其中remove x xs从列表xs 中删除所有出现的x(作为练习留下的实现.)