Haskell / GHC - 是否有任何中缀标签/编译指示用于“警告不完整模式”?

发布于 2024-11-03 17:38:59 字数 194 浏览 0 评论 0原文

我正在寻找一个可以对特定的不完整模式发出警告的编译指示。它会使编译器失败,并显示以下(假设的)代码:

{-# FAILIF incomplete-patterns #-}
f :: Int -> Int
f 0 = 0

我正在尝试使用箭头编写“编译器”,并且知道模式匹配已完成将有助于隔离错误。谢谢!

I'm looking for a pragma that will warn on a particular incomplete pattern. It would make the compiler fail with the following (hypothetical) code:

{-# FAILIF incomplete-patterns #-}
f :: Int -> Int
f 0 = 0

I am trying to write a "compiler" using Arrows, and knowing pattern matching is complete would help isolate bugs. Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

冷默言语 2024-11-10 17:38:59

您可以使用 -Wall 要求警告,包括不完整的模式:

{-# OPTIONS_GHC -Wall #-}

module A where

f :: Int -> Int
f 0 = 0

产量:

A.hs:6:1:
Warning: Pattern match(es) are non-exhaustive
     In an equation for `f':
         Patterns not matched: GHC.Types.I# #x with #x `notElem` [0#]

或者更具体地说,使用 -fwarn-incomplete-patterns 代替 -Wall >。

没有什么可以在每个表达式的基础上工作:您目前仅限于每个模块的基础。

You can require warnings, including incomplete patterns, with -Wall:

{-# OPTIONS_GHC -Wall #-}

module A where

f :: Int -> Int
f 0 = 0

Yielding:

A.hs:6:1:
Warning: Pattern match(es) are non-exhaustive
     In an equation for `f':
         Patterns not matched: GHC.Types.I# #x with #x `notElem` [0#]

Or more specifically, with -fwarn-incomplete-patterns inplace of -Wall.

There's nothing that will work on a per-expression basis: you're currently restricted to a per-module basis.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文