gpt4 book ai didi

haskell - 为什么 Haskell 中的递归习语是 "' n+ 1' and ' n '"and not "'n' 和 'n-1' "?

转载 作者:行者123 更新时间:2023-12-03 15:05:21 25 4
gpt4 key购买 nike

我正在阅读 Graham Hutton 的 Haskell 书,在他的递归章节中,他经常在“n+1”上进行模式匹配,例如:

myReplicate1 0 _ = []
myReplicate1 (n+1) x = x : myReplicate1 n x

为什么是这样而不是以下,(1)在功能上看起来是相同的,(2)在理解递归发生了什么方面更直观:
myReplicate2 0 _ = []
myReplicate2 n x = x : myReplicate2 (n-1) x

我在这里缺少什么吗?还是只是风格问题?

最佳答案

这些是第一个函数中的 n+k 模式(应该避免!)。两个函数做同样的事情,除了 n+k 一个不匹配负数。 但是,推荐使用后者,如果您故意不想要负数,可以采用 ,因为 n+k 模式被设置为 removed anyways .

所以不,你什么都没有,这确实是风格问题,但我很少在野外看到 n+k 模式。

关于haskell - 为什么 Haskell 中的递归习语是 "' n+ 1' and ' n '"and not "'n' 和 'n-1' "?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2784698/

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