类型孔的语义
类型孔的值可以简单地说是 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
类型)。