类型孔的语义

类型孔的值可以简单地说是 undefined,虽然类型化的孔会触发编译时错误,因此不必为它赋值。但是,类型化的孔(当它们被启用时)会产生编译时错误(或带有延迟类型错误的警告),该错误指出了类型化孔的名称,推断的最常规类型以及任何本地绑定的类型。例如:

Prelude> \x -> _var + length (drop 1 x)

<interactive>:19:7: Warning:
    Found hole `_var' with type: Int
    Relevant bindings include
      x :: [a] (bound at <interactive>:19:2)
      it :: [a] -> Int (bound at <interactive>:19:1)
    In the first argument of `(+)', namely `_var'
    In the expression: _var + length (drop 1 x)
    In the expression: \ x -> _var + length (drop 1 x)

请注意,如果在 GHCi repl 中输入的表达式中输入了孔(如上所述),则还会报告输入的表达式的类型,如 it(此处为 [a] -> Int 类型)。