在案件中非穷举模式的更好例外

too*_*ays 5 haskell exception-handling exception

有没有办法让GHCi在运行时发现调用产生的值与函数的模式匹配不匹配时产生更好的异常消息?

它目前给出了产生非详尽模式匹配的函数的行号,虽然有时有用但需要一轮调试,有时我觉得一遍又一遍地做同样的事情.所以在我尝试整理解决方案之前,我想看看是否存在其他问题.

除了提供行号之外的异常消息还显示了它试图进行的呼叫类型?

这甚至可能吗?

Nat*_*ers 12

尝试打开ghci中的警告.-W例如,通过传递,您可以通过ghc获得编译时警告.您可以通过以下几种方式实现:

ghci -fwarn-incomplete-patterns
Run Code Online (Sandbox Code Playgroud)

或者Neil Mitchell描述了他是如何在他的作品中设置的.ghci.以下是相关摘录:

:set -fwarn-incomplete-patterns
Run Code Online (Sandbox Code Playgroud)

你也可以在ghci手动输入它,但每次启动它都会很痛苦.以这种方式输入,它只适用于在提示符下输入的语句,而不适用于加载文件:l.相反,您可以将此注释放在要警告不完整模式的文件的顶部:

{-# OPTIONS_GHC -fwarn-incomplete-patterns #-}
Run Code Online (Sandbox Code Playgroud)

  • 对于它的价值,当我尝试它时,直接使用实际的命令行选项调用GHCi似乎为加载的文件和在提示符下键入的语句启用它. (2认同)