ASCII字符变量在Data.Word8中的作用

时间:2016-06-02 07:07:35

标签: haskell

我试图找到一个字母的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包混合在一起。

1 个答案:

答案 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