gpt4 book ai didi

haskell 。这个函数如何捕获负数作为参数?

转载 作者:行者123 更新时间:2023-12-02 14:54:01 24 4
gpt4 key购买 nike

我不明白,负数这个函数怎么抓?

mdrop 0 []    = []
mdrop 0 (h:t) = h:t
mdrop n [] = []
mdrop n (h:t) = mdrop (n-1) t

如果我的输入看起来像这样 mdrop (-3) [1, 2, 3, 4, 5, 7, 88, 6]我收到一个空列表。但我不明白哪一行捕捉到负数。

最佳答案

没有什么可以专门捕获负数,但是减少 n总是伴随着一个较短的列表,所以最终你找到了空列表并且第三个等式匹配。 n 是不可反驳模式的一个例子;它将匹配任何 数字(正数、零或负数),尽管根据给定的定义,在您确认第一个参数不为零之前,它永远不会被检查。

实际上,负参数产生与足够大的参数相同的结果,因为它总是可以递减而不会达到 0。

手动追踪,

     mdrop (-3) [1,2,3,4,5,7,88,6] 
== mdrop (-4) [2,3,4,5,7,88,6]
== mdrop (-5) [3,4,5,7,88,6]
== mdrop (-6) [4,5,7,88,6]
== mdrop (-7) [5,7,88,6]
== mdrop (-8) [7,88,6]
== mdrop (-9) [88,6]
== mdrop (-10) [6]
== mdrop (-11) []
== []

顺便说一句,您的前两个定义可以替换为单个定义

mdrop 0 xs = xs

因为在两个原始定义中,当第一个参数匹配 0 时,您只需返回第二个参数。

关于 haskell 。这个函数如何捕获负数作为参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53898222/

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