我目前正在處理函數,它將2個整數和一個列表作爲參數,並返回一個列表,其中第一個列表中的元素位於這兩個整數之間的位置(function :: Int - >內部 - > [U] - > [U])。例如:代碼不適用於無限列表
>function 2 5 [1..10]
回報
[2,3,4,5]
上面的例子正在與我當前的代碼...但如果我喜歡插入一個無限列表[0..7]它返回一個「錯誤 - 垃圾收集不能收回足夠的空間「。有什麼建議麼? 下面是代碼
function :: Int->Int->[u]->[u]
function i j s
|i<0 = function 0 j s
|j< length s = function i j (init s)
|j-i< (length s)-1 = function i j (tail s)
|otherwise = s
我們怎麼知道你的執行出了問題,當你不發佈它的源代碼? – leftaroundabout
你是對的,發佈編輯。我沒有發佈代碼,因爲我沒有寫任何東西來處理無限列表... – DiVeRsi0n
'function'有點奇怪;我們通常在Haskell中以'0'開始索引列表,而不是從'1'開始。也就是說,你可以很容易地根據前奏函數'drop'和'take'來定義它們,它們都可以在無限列表上正常運行。 'function start end = drop(start - 1)。結束'。 – Cirdec