gpt4 book ai didi

haskell - 模式匹配 [x,_] 语法 vs (x :_) for infinite lists in haskell

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

我希望获取列表中第二个元素的函数的这些定义是相同的

let myFunction (a:(b:_)) = b
let myFunction [a,b,_] = b

...但第二个不适用于无限列表
Prelude> let myFunction [a,b,_] = b
Prelude> myFunction [1..]
*** Exception: <interactive>:8:5-26: Non-exhaustive patterns in function myFunction

有什么不同?

编辑:也许 [a,b,_]扩展为 (a:(b:(_:[]))) ?

最佳答案

[x,_]只匹配正好有两个元素的列表。同样,[a,b,_]匹配任何正好包含三个元素的列表,将第一个元素放入 ab 中的第二个元素并丢弃第三个。 (x:_) ,另一方面,匹配具有至少一个元素的任何列表,将第一个元素放入 x并丢弃其余部分。
(:)是列表构造函数。所有非空列表都由对 (:) 的调用组成。 .请注意 [a,b,c]a : (b : (c : [])) 的语法糖.

关于haskell - 模式匹配 [x,_] 语法 vs (x :_) for infinite lists in haskell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25355818/

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