我试图找到一个字母的ord值的变量(a = 97,A = 65),以使我的代码更容易阅读。我发现Data.Word8
模块以下列方式为字符定义了一些变量:
_a = 0x61
_b = 0x62
_c = 0x63
_d = 0x64
等
但是,当我尝试使用这些变量时,我收到以下错误:
Found hole `_x' with type: t
Where: `t' is a rigid type variable bound by
the inferred type of it :: t at <interactive>:27:1
Relevant bindings include it :: t (bound at <interactive>:27:1)
In the expression: _x
In an equation for `it': it = _x
这是我第一次遇到打字洞。在查看了类型孔的介绍后,我仍然不明白(a)为什么Data.Word8
使用它们和(b)类型孔如何出现在等号的LHS上。在我读的介绍中,它们只出现在RHS上(c)我如何在我的代码中使用这些变量?
如果有人有解释,我们将不胜感激。
编辑:我觉得现在有点蠢。我正在将Data.Word8
包与包含Data.Word
数据类型的Word8
包混合在一起。
答案 0 :(得分:5)
(a)为什么Data.Word8使用它们
它没有。你忘记了import Data.Word8
。因此,标识符_x
未知:
GHCi, version 7.10.3: http://www.haskell.org/ghc/ :? for help
ghci> _x
<interactive>:2:1:
Found hole ‘_x’ with type: t
Where: ‘t’ is a rigid type variable bound by
the inferred type of it :: t at <interactive>:2:1
Relevant bindings include it :: t (bound at <interactive>:2:1)
In the expression: _x
In an equation for ‘it’: it = _x
ghci> import Data.Word8
ghci> _x
120
(b)类型孔如何出现在等号的LHS上
出现在右侧,因为GHCi使用it = <last-expression>
。由于最后一个表达式为_x
,因此您突然有一个打字的洞。
(c)如何在我的代码中使用这些变量?
导入 Data.Word8
。