gpt4 book ai didi

haskell - 为什么 'head'(来自 prelude 包)还没有通过 Maybe 安全地实现?

转载 作者:行者123 更新时间:2023-12-01 22:26:42 25 4
gpt4 key购买 nike

前奏,head具有以下签名: head::[a] -> a 这使得它在空列表上不安全,这不好! (head::[a] -> 也许 a 是个好方法:-) )

这适用于列表上的其他几个函数:last、tail、initminimum、maximum、cycle、last、init、foldl1、cycle...实际上有很多这样的函数调用 errorEmptyList

引用Stephen Diehl来自他的website :

"Safe provides Maybe versions of many of the various partial functions (head, tail) that are shipped by default. Wrapping it up in a Maybe is widely considered the right approach and if Haskell were designed today, they would not be present."

我希望看到这些不安全的函数以某种方式标记为某种约定,至少因为我认为我们中的任何人都不喜欢生产中出现异常:-)

是什么阻止社区在前奏中解决这些问题?

最佳答案

社区已在 Hackage 上分发的自定义前奏中修复了此问题。但它本身无法修复前奏,这取决于负责的 haskell 委员会。对于向后兼容性问题,它从未得到修复。

(我个人更喜欢 Relude 在这方面的方法。这个 prelude 的 head 函数的类型为 NonEmpty a -> a。)

关于haskell - 为什么 'head'(来自 prelude 包)还没有通过 Maybe 安全地实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53139761/

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