Haskell:如何汇总函数列表?

Cha*_*tor 0 haskell

我想在Haskell中使用递归.我定义:

pf:: Int -> Int
pf 1 = 1
pf n = pf 1 + sum[pf 1..pf n-1]
Run Code Online (Sandbox Code Playgroud)

但总和不正确!总结一系列功能的正确方法是什么?

Art*_*yom 6

[pf 1..pf (n-1)]是不一样的[pf 1, pf 2, pf 3, ..., pf (n-1)].

> let f x = 2^x
> [f 1 .. f 4]
[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
> [f 1, f 2, f 3, f 4]
[2,4,8,16]
Run Code Online (Sandbox Code Playgroud)

你可能想要map:

pf n = pf 1 + sum (map pf [1..n-1])
Run Code Online (Sandbox Code Playgroud)

而且,就像一句话,pf x = 2^(x-1).