[Haskell-beginners] Incomplete patterns
Sylvain Henry
sylvain at haskus.fr
Thu Jul 6 09:21:35 UTC 2017
Hi,
In the following code:
insert m@(LogMessage _ t _) (Node left value@(LogMessage _ t' _) right)
| t <= t' = Node (insert m left) value right
| t > t' = Node left value (insert m right)
GHC can't detect that both guards (t <= t') and (t > t') cover all
cases. The usual way to deal with this is to use "otherwise" (which is
always true):
insert m@(LogMessage _ t _) (Node left value@(LogMessage _ t' _) right)
| t <= t' = Node (insert m left) value right
| otherwise = Node left value (insert m right)
Regards,
Sylvain
On 06/07/2017 11:12, Jona Ekenberg wrote:
> Hello,
>
> I am currently going through the CIS194 spring 13 course, since it has
> been recommended by several haskellions. I find the exercises
> extremely valuable, and the reading material is succinct (in a good way).
>
> I just finished the exercises for lesson two, and while everything
> works, I get this warning:
> Lektion02.hs:(38,1)-(44,21): warning: [-Wincomplete-patterns] …
> Pattern match(es) are non-exhaustive
> In an equation for ‘insert’:
> Patterns not matched:
> (LogMessage _ _ _) (Node _ (LogMessage _ _ _) _)
>
> I understand that there is a pattern I'm not covering, but I can't
> really figure out which one. Here is my function:
> insert :: LogMessage -> MessageTree -> MessageTree
> insert (Unknown _) mt = mt
> insert m Leaf = Node Leaf m Leaf
> insert m@(LogMessage _ t _) (Node left value@(LogMessage _ t' _) right)
> | t <= t' = Node (insert m left) value right
> | t > t' = Node left value (insert m right)
> insert m@(LogMessage _ _ _) (Node left (Unknown _) right)
> = Node left m right
>
> (here's a pastebin with intact indentation: http://lpaste.net/356716)
>
> I am not sure on how I should progress to find out which pattern I'm
> missing.
> Any help is appreciated.
>
> Kind regards,
> Jona
>
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/beginners/attachments/20170706/f36852cf/attachment-0001.html>
More information about the Beginners
mailing list