`until`函数工作原理是什么?如何用其实现相邻重复项处理?
一开始我想着用until函数来处理相邻重复项的问题,但试了好几次都没成功,这才反应过来自己根本没搞懂until的运行机制。没办法,我直接采用了提问者提供的这个移除相邻重复项的函数:
removeAdjDups :: (Eq a) => [a] -> [a] removeAdjDups [] = [] removeAdjDups [x] = [x] removeAdjDups (x : y : ys) | x == y = removeAdjDups ys | otherwise = x : removeAdjDups (y : ys)
之后我又编写了一个用来判断列表中是否存在相邻重复项的布尔函数:
hasAdjDups :: (Eq a) => [a] -> Bool hasAdjDups [] = False hasAdjDups [x] = False hasAdjDups (x : y : ys) | x == y = True | otherwise = hasAdjDups (y : ys)
内容的提问来源于stack exchange,提问作者Stéphane Laurent
相关产品推荐
相关产品推荐

