gpt4 book ai didi

haskell - 实际上是 Haskell 中的通用长度函数

转载 作者:行者123 更新时间:2023-12-01 06:07:31 24 4
gpt4 key购买 nike

length 在输入上是通用的,因为它接受任何 Foldable
genericLength 在输出上是通用的,因为它输出任何 Integral

是否有一个实际上完全通用的函数类型:

(Integral b, Foldable t) => t a -> b

甚至:
(Num b, Foldable t) => t a -> b

尽管 length 应该只生成整数值,但整数也是浮点数,因此生成任何数字都可以正常工作。

目前我只是使用:
foldl' (const (+ 1)) 0

我知道可以很容易地制作一个,但我也知道基本函数经常以某种方式进行优化,所以我希望有一个现有的函数来通用计算 length 。如果不是我的后续问题是为什么?具体为什么 genericLength 不接受 Foldable

最佳答案

我的意思是这在评论中得到了很好的回答。但正因为如此,这个问题被标记为已回答,原因基本上是 genericLength 由于支持惰性自然数而具有糟糕的性能,因此几乎应该避免。通过重写规则部分避免了这个性能问题,但即使如此,它仍然不是一个好用的函数,因此不值得尝试进一步概括它。

关于haskell - 实际上是 Haskell 中的通用长度函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36753155/

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