gpt4 book ai didi

Haskell - 检查位置是否为偶数/奇数

转载 作者:行者123 更新时间:2023-12-03 18:36:16 27 4
gpt4 key购买 nike

我需要做的是在列表中交替应用 2 个函数。例如:

(*2) (-3) [4,5,6,7,8]
会导致 [8,2,12,4,16] , 因为 4*2 , 5-3 , 6*2 , 7-3 , 8*2 ...
我在想的是
funct :: (a -> b) -> (a -> b) -> [a] -> [b]
然后像 [f x | x <- xs] 但是我不会只有“ f ”,但也会有其他功能。
所以我在考虑检查 x 的位置。如果它是偶数位置,则 f x 。否则 g x
有人可以帮助我吗?
Tks。

最佳答案

您并不真正需要索引,您需要的是一个在 (*2)(-3) 之间交替的列表。我们可以使用 cycle :: [a] -> [a] zipWith :: (a -> b -> c) -> [a] -> [b] -> [c] 。因此我们可以使用:

zipWith ($) (cycle [(2*), subtract 3]) [4,5,6,7,8]
这里 ($) :: (a -> b) -> a -> b 用于执行功能应用。所以 ($) f x 等价于 f x
这给出了预期的:
Prelude> zipWith ($) (cycle [(2*), subtract 3]) [4,5,6,7,8]
[8,2,12,4,16]

关于Haskell - 检查位置是否为偶数/奇数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64851169/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com