Haskell中是否有任何庫函數可以讓我檢查列表是否連續排序?例如。 [1,2,3,4]有效,[1,2,3,10]無效。檢查是否連續排序列表
基本上我可以有一個列表,範圍從3到5個元素之間的任何地方,我試圖檢查該列表是否連續排序。
我嘗試(我不知道這是否是接近正確的方式,似乎是太多重複)
isSucc:: [Integer] -> Bool
isSucc[] = True
isSucc(x:y:zs) =
if (x+1) == y
then True && isSucc(y:zs)
else isSucc(y:zs)
後,我有這個功能的工作,我打算使用它過濾列表(僅在列表內保留列表,並且僅在連續排序時)
誤解問題的方法!但是,應該清楚如何改變'f'來使這個做你想做的。 – MathematicalOrchid 2013-03-21 08:24:54
我從來沒有想過要做一個下降1。看起來像一個更好的解決方案來實現,但會減少1 xs比'(x:xs)'更昂貴? – rlhh 2013-03-21 08:35:16
事實上,在這種情況下,'zipWith'與'zipWith'一起使用時'tail'很好,因爲命令'zipWith'的事故評估了它的參數。但是按順序評估它的參數並不是偶然的。 – Carl 2013-03-21 08:53:18