haskell - COMPLETE pragma 不会阻止不完整模式警告

标签 haskell ghc

我为类似列表的类制作了两个模态视图。

infixr 5 :<
pattern (:<) :: Stream s => Token s -> s -> s
pattern b :< bs <- (uncons -> Just (b, bs))
  where b :< bs = cons b bs

pattern Nil :: Stream s => s
pattern Nil <- (uncons -> Nothing)
  where Nil = empty

uncons签名:uncons :: (Stream s) => s -> Maybe (Token s, s) .

假设我也有使用这些模式的函数:

foo (b:<bs) = …
foo Nil = …

很明显,在这种情况下,模式匹配是详尽的,我想指出这一点。

所以我尝试使用 COMPLETE pragma像这样:{-# COMPLETE Nil, (:<) :: Stream #-} .

这不起作用,警告没有任何作用。为什么没有呢?可以做我想做的事吗?

最佳答案

COMPLETE 编译指示只能附加到类型,而不是类型类。目前还没有办法指定适用于给定类的所有类型的完整模式集。

关于haskell - COMPLETE pragma 不会阻止不完整模式警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58401723/

相关文章:

haskell - 如何使 fmap 重写规则触发?

debugging - `derivingUnbox` 不适用于超过 6 个整数的类型

haskell - 具有多个输入的熔断导管

haskell - 在类型级别未定义

haskell - Haskell是否有内在的“垃圾成本”?

haskell - 如何调用集成在 Haskell 类型中的函数?

Haskell:TVar:防止饥饿

haskell - 可以确保在安装 GHC 7.8 时安装分析库吗?

haskell - 如何查看 GHC 中的完整成本中心堆栈?

haskell - 在 Haskell 中将两个类合并/合并为一个类