Как передать параметр, который не используется в вызове функции? - PullRequest
0 голосов
/ 29 декабря 2018

Я написал две функции.Моя первая функция получает два параметра: 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 в эту функцию?

Полагаю, мне нужно лямбда-выражениеза что?

1 Ответ

0 голосов
/ 29 декабря 2018

Да, вы передаете ей лямбда-функцию, (\ i -> taylor i x), вот так:

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

Вы можете использовать, например, как map (foo 1000) [1..10].

Лямбда-функция определена вобъем x, поэтому он может использовать его.Новая лямбда-функция определяется вызовом foo для каждого x, с которым вызывается foo.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...