You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

`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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:17:03