實作串列功能,將串列的一部分切掉!第一個引數是子串列開始的索引,第二個引數是切割的長度。
list :: Int -> Int -> [b] -> [b]
list a b (x: xs) = x: sublist (a: a b) xs
我嘗試了這個遞回解決方案,但它不起作用。我不知道如何制作此代碼。我能得到一些幫助嗎?
uj5u.com熱心網友回復:
利用前奏。先下降,然后采取:
cut :: Int -> Int -> [a] -> [a]
cut m n = take n . drop m
例如:
> cut 2 3 [0, 1, 1, 2, 3, 5, 8, 13]
[1,2,3]
或者,如果您設定滾動自己的遞回實作:
cut' :: Int -> Int -> [a] -> [a]
cut' 0 0 xs = [] -- done
cut' _ _ [] = [] -- done
cut' 0 n (x : xs) = x : cut' 0 (n - 1) xs -- take
cut' m n (x : xs) = cut' (m - 1) n xs -- drop
的確:
> cut' 2 3 [0, 1, 1, 2, 3, 5, 8, 13]
[1,2,3]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/335416.html
上一篇:如何識別變數是否在串列中?
下一篇:從不同的索引位置迭代串列中的元素
