Haskell 什么是类型化钻孔勘探开发方式?

Haskell 什么是类型化钻孔勘探开发方式?,haskell,functional-programming,Haskell,Functional Programming,在做CIS194(2013年春季)作业10时,我被Applicative类型的解析器实例卡住了。我向谷歌寻求帮助,这是我遇到的。用户ephrion给出了一个答案,这也是一个类型化孔探测方法的例子,我不太理解。在答复的评论部分,他还说: 它非常有用,也是Haskell开发如此出色的原因之一 所以问题是,这个方法到底是什么,这个方法中是否有明确的步骤顺序 当我谈到Haskell时,我仍然认为自己是个初学者,通过搜索这个主题,我没有找到一个非常清楚的解释,说明这种开发模式是如何使用的。 在Haskel

在做CIS194(2013年春季)作业10时,我被
Applicative
类型的
解析器实例卡住了。我向谷歌寻求帮助,这是我遇到的。用户ephrion给出了一个答案,这也是一个类型化孔探测方法的例子,我不太理解。在答复的评论部分,他还说:

它非常有用,也是Haskell开发如此出色的原因之一

所以问题是,这个方法到底是什么,这个方法中是否有明确的步骤顺序


当我谈到Haskell时,我仍然认为自己是个初学者,通过搜索这个主题,我没有找到一个非常清楚的解释,说明这种开发模式是如何使用的。 在Haskell赋值的右侧,几乎任何地方都可以写下划线(可选后跟其他字符),而不是值(常量或函数)。然后,GHC将告诉您可能要用哪种类型的值替换下划线,并列出范围中哪些标识符属于该类型,而不是编译


Matthías páll Gissurarson正在扩展GHC的提示列表,以包括复合表达式。

我在几个StackOverflow答案中演示了这一点,例如,当您大致了解代码应该是什么样子,但不确定在某个位置写什么时,您可以简单地编写一个洞作为占位符。然后,GHC将告诉您该孔必须具备的类型,以进行所有类型的检查。通常,你会用更多的代码替换这个洞,可能会有更多的洞在里面,以便进行更多的探索,直到你可以编写没有洞的完整代码。@leftaroundabout这是一个非常好和清晰的例子。非常感谢。您还可以命名孔,如果有多个孔,这将非常有用
\u thisphole
\u thatphole
我还使用类型holes与
ScopedTypeVariables
组合来找出某个表达式的类型,例如
thing::_