我写了两个函数。我的第一个函数接收两个参数,f
一个函数和n
。 f
是任意函数,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)
对于此功能,我需要两个参数i
和x
。
参数i
将通过我的series
函数传递,但是如何将参数x
传递给该函数?
我想,我需要一个Lambda表达式吗?
答案 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函数。