gpt4 book ai didi

haskell - 为什么 `Bits` 依赖于 `Num` ?

转载 作者:行者123 更新时间:2023-12-04 15:26:31 27 4
gpt4 key购买 nike

我一直在编写自己的位向量(表示为 Word64 值上的严格元组)作为时间和空间优化的练习,并希望定义 Bits 的实例。 typeclass 为他们,但后来我注意到 Bits 的类声明定义如下:

class Num a => Bits a

为了解决这个问题,我定义了一个假的 Num实例也是如此,主要由 error 组成-valued 函数作为一个 hack,但这感觉不对......

依赖 Num 的理由是什么?按位操作的类型类?能够拥有 Bits 不是更有意义吗?实例独立于必须声明 Num实例也是?

最佳答案

Bits取决于 Num , 因为 Num提供数字文字和否定,用于 Bits 的默认方法中,像这样:

bit :: Int -> a
bit i = 1 `shiftL` i

testBit :: a -> Int -> Bool
x `testBit` i = (x .&. bit i) /= 0

如果没有默认方法,你可以想象没有 Num约束。

关于haskell - 为什么 `Bits` 依赖于 `Num` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6563245/

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