gpt4 book ai didi

list - Haskell List Concatenation vs. (head : tail) format

转载 作者:行者123 更新时间:2023-12-04 13:17:16 25 4
gpt4 key购买 nike

我总是以这种格式编写生成列表的递归函数:

recursiveFunc :: [a] -> [b]
recursiveFunc (x:xs) = [change x] ++ resursiveFunc xs where
change :: a -> b
change x = ...

我意识到上面的任何函数都可以为 a -> b 编写。大小写,然后简单地 map编辑一组 [a] ,但请以这种淡化的情况为例。

HLint 建议替换 [change x] ++ recursiveFunc xschange x : recursiveFunc xs .

这个建议是纯粹的审美,还是对 Haskell 如何执行该功能有一些影响?

最佳答案

使用 [change x] ++ recursiveFunc xs 时您创建了一个多余的单元素列表,然后由 ++ 拆分功能。使用 :这不会发生。

++是一个函数,然后将使用 :构造函数。当您使用 :直接,不需要调用函数。

所以使用 :理论上更有效(尽管编译器可能会优化这些差异)。

关于list - Haskell List Concatenation vs. (head : tail) format,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9519552/

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