gpt4 book ai didi

haskell - 将提升函数应用于 Haskell 中的元组(任意长度)

转载 作者:行者123 更新时间:2023-12-04 22:28:52 28 4
gpt4 key购买 nike

有没有解释为什么提升的函数,当应用于 2-tuple 时,只适用于第二个条目:

f x = x + 1
f <$> (2,2)
// -> (2,3)

另一方面, 元组的任何其他长度而不是 2 返回错误。

:t f <$>

返回错误。对元组进行操作时是否可以看到 f <$> 的类型?

这种行为有什么解释吗?

The Data.Tuple documentation 非常简短,没有提到函数是如何提升到元组的。有没有解释的来源?

更新。关于 2-tuples 的问题的一部分与 this answer 相关,但是,上面关于多长度元组的问题没有解决。

最佳答案

人们可以(并且可以说,GHC 应该)为三元组和更大的元组定义一个 Functor 实例。以机智:

instance Functor ((,,) a b) where
fmap f (a, b, c) = (a, b, f c)

如果这个实例在 base 的任何地方都不存在,我怀疑这主要是疏忽,尽管我不太了解历史,无法确定。您可以将其包含在任何看起来有用的代码中,但需要注意的是,您应该绝对为 base 文件中的 *.cabal 版本设置一个相当严格的上限,因为此实例可能会合理地包含在 base 的 future 版本中。在这种情况下, The PVP 只允许更改版本的第三个组件,因此至少要在上限中包含那么多组件!

关于haskell - 将提升函数应用于 Haskell 中的元组(任意长度),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41327198/

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