gpt4 book ai didi

haskell - (reverse . f . reverse) 有效吗?

转载 作者:行者123 更新时间:2023-12-03 21:23:01 26 4
gpt4 key购买 nike

很多时候,我看到在列表头部运行的函数,例如:

trimHead ('\n':xs) = xs
trimHead xs = xs

然后我看到了定义:
trimTail = reverse . trimHead . reverse

然后我看到:
trimBoth = trimHead . trimTail

它们很干净,但是 trimTailtrimBoth高效的?有没有更好的办法?

最佳答案

考虑这种替代实现

trimTail2 [] = []
trimTail2 ['\n'] = []
trimTail2 (x:xs) = x : trimTail2 xs

trimBoth2 = trimHead . trimTail2

很容易确认 trimTailtrimBoth要求评估整个列表,而 trimTail2trimBoth2只评估尽可能多的列表。
*Main> head $ trimTail ('h':undefined)
*** Exception: Prelude.undefined
*Main> head $ trimBoth ('h':undefined)
*** Exception: Prelude.undefined
*Main> head $ trimTail2 ('h':undefined)
'h'
*Main> head $ trimBoth2 ('h':undefined)
'h'

这意味着如果不需要整个结果,您的版本效率会降低。

关于haskell - (reverse . f . reverse) 有效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7152183/

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