如何传递调用函数中未使用的参数?

时间:2018-12-29 12:06:23

标签: haskell lambda scope

我写了两个函数。我的第一个函数接收两个参数,f一个函数和nf是任意函数,n是停止值。

我的第一个功能看起来像这样

series f 0 = (f 0)
series f n = seriesInt f n 0 0

-- Not a main question, but how can both these functions series and 
-- seriesInt be written as one function?     

seriesInt f n acc i | i <= n = seriesInt f n (acc + (f i)) (i+1)
                    | otherwise = acc

我的第二个功能是这个

taylor i x | x == 1 = 1
           | otherwise = ((-1)^i / (myFac t)) * (x^t)
   where 
   t = (2 * i + 1)

对于此功能,我需要两个参数ix

参数i将通过我的series函数传递,但是如何将参数x传递给该函数?

我想,我需要一个Lambda表达式吗?

1 个答案:

答案 0 :(得分:3)

是的,您将其传递给lambda函数(\ i -> taylor i x),如下所示:

foo n x = seriesInt (\ i -> taylor i x) n 0 0

您可以使用例如map (foo 1000) [1..10]

lambda函数在x的范围内定义,因此可以使用它。通过调用foo的每个x调用foo来定义一个新的lambda函数。