我们假设我有一个清单:
[1, 1, 1, 2, 2, 2, 2, 3, 4, 4, 4]
我想要一个只显示每个数字一次的功能。所以,最后,这个列表看起来像:
[1, 2, 3, 4]
我还没有尝试过任何东西
答案 0 :(得分:3)
我会建议nub。您的示例还具有在输入中对项目进行排序的特殊属性,这使我想到group,可能后跟一个头。当然,你可以放弃合成,并尝试将它们全部包装成一个函数。
一个例子:
import Data.List (group, nub)
main = do
print . map head $ group test
print $ nub test
printOnce test
printOnce = printOnceHelper []
where
printOnceHelper _ [] = return ()
printOnceHelper alreadyPrinted (current:next)
| elem current alreadyPrinted = printOnceHelper alreadyPrinted next
| otherwise = do
print current
printOnceHelper (current:alreadyPrinted) next
test = [1, 1, 1, 2, 2, 2, 2, 3, 4, 4, 4]