使用模式匹配从SML中的列表中删除连续重复

使用模式匹配从SML中的列表中删除连续重复,sml,smlnj,Sml,Smlnj,我想制作一个函数removeDups,如果可能的话,它将只使用模式匹配从列表中删除任何重复的元素。如果我有一个类似于[1,1,1,2,3,4,4,5,6,6,6,6,7,8]的列表,那么我希望输出是[1,2,3,4,5,6,7,8] 到目前为止,我得到的是 fun removeDups [] = [] | removeDups (x::y::xs) = y::removeDups(xs); 这给了我输出[1,2,4,4,6,6,6,8] 我理解的主要问题是跟踪一个元素,这样它就不会再重

我想制作一个函数removeDups,如果可能的话,它将只使用模式匹配从列表中删除任何重复的元素。如果我有一个类似于[1,1,1,2,3,4,4,5,6,6,6,6,7,8]的列表,那么我希望输出是[1,2,3,4,5,6,7,8]

到目前为止,我得到的是

 fun removeDups [] = []
   | removeDups (x::y::xs) = y::removeDups(xs);
这给了我输出[1,2,4,4,6,6,6,8]


我理解的主要问题是跟踪一个元素,这样它就不会再重复了。不确定我是否需要另一个基本情况来处理它。任何提示/解释都可以为我指明正确的方向。

这个问题在3个月前已经得到了回答: