[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