我是Haskell的新手,有一個任務。我必須寫一個函數返回列表的一部分
內部 - > INT - > [U] - > [U]
即給定的輸入兩個整數i和j以及列表和函數返回屬於元素在比我大,比j小的位置上。我到目前爲止想到的是:
fromTo :: Int->Int->[u]->[u]
fromTo i j (h:t)
|i == 1 && j == length(h:t)
= (h:t)
|i /= 1
fromTo (i-1) j t
|j /= length(h:t)
fromTo i j init(h:t)
但是,我得到第二個|的語法錯誤。另外我不確定我的思路在這裏是否正確。 (INIT返回列表中沒有它的最後一個元素)
編輯:更正
|i /= 1
fromTo (i-1) j (h:t)
到
|i /= 1
fromTo (i-1) j t
那麼這是一個解決方案,但分配的重點是理解遞歸和列表。 – Stelios
@Stelios重新格式化的fromTo'適用於序數和有限列表; 'fromTo 1 4 [1..100] == [1,2,3,4]'。 – suchtgott
是的,它確實,現在我試圖讓它爲無限列表工作,因爲@ephemient建議 – Stelios