WinHugs98环境下Haskell Bits类型使用及Int异或操作实现
问题解决方法
错误原因
Bits是Haskell中定义位运算能力的类型类,不是可实例化的具体数据类型,不存在Bits这个数据构造器。你不需要手动将Int转换为所谓的Bits类型,Int类型本身已经实现了Bits类型类,可以直接调用位运算方法。
正确操作步骤
- 导入
Data.Bits模块:
Hugs> :l Data.Bits
- 直接对两个Int数值执行
xor运算即可,运算结果默认就是Int类型,可直接输出:
Data.Bits> 10 `xor` 11 1
如果需要显式指定类型避免歧义,可以添加类型标注:
Data.Bits> (10 :: Int) `xor` (11 :: Int) 1
类型转换方案(按需使用)
如果确实需要先转换为其他实现了Bits类型类的数值类型(如Word等)再运算,可以用fromIntegral方法做类型转换,运算完成后再转回Int即可,示例如下:
-- 先转为Word类型执行异或,再转回Int输出 Data.Bits> fromIntegral ((fromIntegral 10 :: Word) `xor` (fromIntegral 11 :: Word)) :: Int 1
内容的提问来源于stack exchange,提问作者Herman Schoenfeld
相关产品推荐
相关产品推荐

