gpt4 book ai didi

haskell - 如何有效地两次使用这个计算的结果?

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

我对 Haskell 比较陌生,目前正在做我的第一个项目。我写了一个函数,它根据对另一个函数的调用返回一些东西,它再次调用这个函数(所以它是递归的)。

function :: a -> a
function a
| null (recursive call) = a
| otherwise = head (same recursive call)
我怎样才能只进行一次递归调用并使用两次结果(作为条件和“返回值”的一部分)?

最佳答案

function a
| null recCall = a
| otherwise = head recCall
where recCall = recursive call
但这不是一个好方法。避免使用 head , tail , !! .通常有一种叫做“ bool 盲症”的东西:使用 bool 值意味着程序基本上忘记了你的逻辑所基于的含义,这意味着你需要重新引入它,这会使你的程序变得更加冗长和不可靠。
最好立即对递归结果使用模式匹配:
function a = case recursive call of
[] -> a
(h:_) -> h
这也可以用模式保护语法编写
function a
| (h:_) <- recursive call = h
| otherwise = a

关于haskell - 如何有效地两次使用这个计算的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66188363/

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