打字孔的语法

类型化的孔是表达式上下文中的单个下划线(_)或不在范围内的有效 Haskell 标识符。在存在类型化漏洞之前,这两种情况都会触发错误,因此新语法不会干扰任何旧语法。

控制打字孔的行为

类型化孔的默认行为是在遇到类型化孔时产生编译时错误。但是,有几个标志可以微调他们的行为。这些标志总结如下( GHC trac ):

默认情况下,GHC 启用了类型化的孔,并在遇到类型化的孔时产生编译错误。

启用 -fdefer-type-errors -fdefer-typed-holes 时,孔错误将转换为警告,并在评估时导致运行时错误。

警告标志 -fwarn-typed-holes 默认打开。没有 -fdefer-type-errors-fdefer-typed-holes 这个标志是无操作的,因为在这些条件下打字的孔是错误的。如果启用了任一延迟标志(将键入的孔错误转换为警告),-fno-warn-typed-holes 标志将禁用警告。这意味着编译静默成功并且评估一个洞将产生运行时错误。