首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否有一个无符号整数类型将警告负值?

是否有一个无符号整数类型将警告负值?
EN

Stack Overflow用户
提问于 2014-10-26 14:54:35
回答 1查看 1.4K关注 0票数 27

如果整数文本超出了给定类型的范围,ghc的最新版本将警告您。例如:

代码语言:javascript
运行
复制
$ ghci
>>> let x = 330492039485 :: Data.Word.Word8
<interactive>:2:9: Warning:
    Literal 330492039485 is out of the GHC.Word.Word8 range 0..255

但是,ghc不会对Data.Word类型的负面数字文本发出警告。相反,它(根据文件是有意的)流入:

代码语言:javascript
运行
复制
>>> let x = -1 :: Data.Word.Word8
>>> x
255

是否有任何类型会对负面文本发出警告,或者我是否可以创建自己的自定义类型来发出警告?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-26 17:06:26

默认情况下,像-1这样的文字被描述为negate (fromInteger 1)。然而,有一个语言扩展NegativeLiterals使它变成了fromInteger (-1)。如果启用了这样的功能,就会收到警告:

代码语言:javascript
运行
复制
Prelude> :m +Data.Word
Prelude Data.Word> :set -W
Prelude Data.Word> :set -XNegativeLiterals
Prelude Data.Word> -1 :: Word

<interactive>:74:1: Warning:
    Literal -1 is out of the Word range 0..18446744073709551615
18446744073709551615
Prelude Data.Word>

或者,您可以自己创建重新定义negate的类型,但可能只会得到一个运行时错误。

票数 39
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26574302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档