完整杂注不能防止不完整模式警告

  • 本文关键字:警告 模式 不能 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 Nil, (:<) :: Stream #-}.

那没有用,警告没有去任何地方。为什么没有呢?可以做我想做的事吗?

COMPLETE

杂注只能附加到类型,而不能附加到类型类。目前无法指定适用于给定类的所有类型的完整模式集。

相关内容

  • 没有找到相关文章

最新更新