型別孔的語義

型別孔的值可以簡單地說是 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 型別)。