gpt4 book ai didi

haskell - 如何在 Haskell 中实现 ^ 运算符?

转载 作者:行者123 更新时间:2023-12-04 13:41:58 24 4
gpt4 key购买 nike

我正在为 Haskell 中的 Fraction 数据类型创建一堆实例,我想知道是否有一个地方可以实现 ^运算符(operator)。

我的意思是,我有几个不同的实例 Num类型,在这些实例中,我定义了常见的操作,例如 + , - , ETC。

有了它,数据类型就像我想要的那样表现出正常的数字(这意味着我可以调用 (Frac 1 2) + (Frac 1 4) 之类的东西并返回 Frac 3 4 )

我要做的是实现 ^直接地。现在,我已经将它定义为:

(|^|) :: Fraction -> Int -> Fraction
(|^|) f = foldr (*) mempty . flip replicate f

当我尝试将函数名称更改为 ^ ,我收到一个错误,因为它与 Prelude 对 ^ 的定义冲突.有没有 Num输入我可以给我的 Fraction输入一个实例以允许我使用 ^运营商就可以了?

谢谢!

最佳答案

Prelude.^不是任何类型类的一部分,因此您可以定义自己的^ 的唯一方法功能是隐藏 Prelude .

请注意,由于 Prelude.^ 的签名是 (Num a, Integral b) => a -> b -> a ,您将能够在 Frac 的值上使用它只要是 Num 的实例,输入就可以了.您只是不会提供自己的实现。

关于haskell - 如何在 Haskell 中实现 ^ 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11976713/

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