gpt4 book ai didi

Haskell:将列表中的每第二个元素加倍

转载 作者:行者123 更新时间:2023-12-02 09:34:44 24 4
gpt4 key购买 nike

我刚刚开始使用 Haskell,想编写一个函数,给定一个列表,返回一个列表,其中每个第二个元素都被加倍。

到目前为止我已经想出了这个:

double_2nd :: [Int] -> [Int]
double_2nd [] = []
double_2nd (x:xs) = x : (2 * head xs) : double_2nd (tail xs)

这可行,但我想知道你们将如何编写该函数。有没有更常见/更好的方法或者这看起来正确吗?

最佳答案

这还不错,以建议的修复为模。一旦您更加熟悉基础库,您可能会避免显式递归,而转而使用某些更高级别的函数,例如,您可以创建一个函数列表,其中每个函数都是 *2 并应用(zip) 该函数列表到您的数字列表:

double = zipWith ($) (cycle [id,(*2)])

关于Haskell:将列表中的每第二个元素加倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17383169/

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