gpt4 book ai didi

haskell - 高阶函数和缺乏递归

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

我才刚刚开始我的 Haskell 之旅,直到我遇到柯里化(Currying)、部分应用程序和高阶函数(即当它开始变得有趣时),我才开始飞行 - 是的,我知道介绍的东西很简单,所以可能是这个东西!)

无论如何,这个问题是关于高阶函数的。给定一个著名教程中的这个例子

applyTwice :: (a -> a) -> a -> a  
applyTwice f x = f (f x)

我可以看到它是如何工作的,如果我暂停我的怀疑,我相信我理解它。但是,让我感到困惑的是为什么这不会递归。鉴于当我们重新进入回调时对 f (f x) 的调用,我们肯定会再次进行模式匹配。我在这里错过了什么?

最佳答案

这不会递归,因为 applyTwice 没有被递归调用。这可能有点同义反复,所以让我们看一下评估轨迹。

inc :: Int -> Int
inc n = n + 1

applyTwice inc 3
(\f x -> f (f x)) inc 3
(\x -> inc (inc x)) 3
inc (inc 3)

随着 f 变成 incx 变成 3 我们看到所有的 applyTwice 确实是采用它的第一个参数,然后将它应用两次到它的第二个参数。

关于haskell - 高阶函数和缺乏递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24419697/

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