如何在Haskell中編寫powerList
函數?我希望用n
乘法運算構建這樣一個列表,其中每個元素是前一個元素的簡單倍數,而不是指數操作的n
。在Haskell中計算`[1,x^1,x^2,...,x^n]`
理想情況下,實現是乾淨的,慣用的Haskell,並且相當高效。
-- powerList x n -> [1, x, x^2, ..., x^n]
-- For example:
-- powerList 2 0 -> [1]
-- powerList 2 1 -> [1, 2]
-- powerList 2 2 -> [1, 2, 4]
-- powerList 2 3 -> [1, 2, 4, 8]
-- powerList 2 4 -> [1, 2, 4, 8, 16]
powerList :: forall a. Integral a => a -> a -> [a]
powerList _ 0 = [1]
powerList x n = [] -- ???
太棒了!謝謝!將在計時器允許時接受。 – clay
Haskell奇妙地允許無限形式[0,1 ..]所以你可以 (\ kx-> map(k ^)$ take(x + 1)[0,1 ..])2 4 它產生[1 ,2,4,8,16] 此外,我不明白爲什麼要求4值應該產生5.(X + 1)應該是X和結果[1,2,4,8] – fpmora
但是,而不是使用take來限制無限生成器,直接使用n .... (\ kn - > map(k ^)[0..n])2 4但是這會產生5個值[1,2,4,8, 16] – fpmora