我想做这样的事情:
data Bit = 0 | 1
但是由于右侧必须是有效的数据构造函数(?),我必须使用像
这样的东西 data Bit = Zero | One
这并不是特别好,因为我想使用实际值0和1.什么是我的难题的最佳解决方案?
答案 0 :(得分:8)
您可能会喜欢我前一段时间写的这个厚脸皮Num
实例:
instance Num Bool where
(+) = (/=)
(*) = (&&)
negate = id
abs = id
signum = id
fromInteger = odd
例如,在ghci:
> (3 + 5) * 6 :: Bool
False
您应该能够使用类似的,经过适当修改的内容来支持data Bit = O | I
而不是data Bool = False | True
。