我試圖將列表的一部分列出,而元素與以前只有一列不同。一個簡單的任務可以實現,如:Haskell按升序排列(+1)列表的一部分
takeAsc:: (Eq a, Enum a) => [a] -> [a]
takeAsc [] = []
takeAsc [x] = [x]
takeAsc (x:y:xs)
|y == succ x = x: takeAsc(y:xs)
|otherwise = [x]
但這只是傷害了我的感情。我相信,這是相當廣泛的使用模式,我只是缺少一些特定的功能。我嘗試過使用groupBy或takeWhile,但看起來他們沒有做我想做的事。 任何人都可以指出更優雅的解決方案嗎?
我覺得這個定義非常好,很正常,只是你錯過了單元素列表的情況。 –
謝謝,修復。 – Triostrong