<div dir="ltr">You're missing an argument to insert, assuming that it is indeed there, consider this:<div><br></div><div><font face="monospace, monospace">    insert msg tree = tree'</font></div><div><span style="font-family:monospace,monospace">      where tree' = undefined</span></div><div><font face="monospace, monospace">    -- Take a LogMessage (msg) and a MessageTree (tree)</font></div><div><font face="monospace, monospace">    -- and return a new MessageTree (tree')</font></div><div><font face="monospace, monospace"><br></font></div>Therefore, the result of insert in your case, i.e. "MessageTree Leaf" should be of type MessageTree.<br>And thus, we get<div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">    MessageTree Leaf :: MessageTree</font></div><div><font face="monospace, monospace">    -- Takes a (Leaf :: LogMessage) and produces a MessageTree</font></div><div><font face="monospace, monospace"><br></font></div>which implies,<div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">    MessageTree :: LogMessage -> MessageTree</font></div><div><font face="monospace, monospace">    -- A Data constructor</font></div><div><font face="monospace, monospace"><br></font></div>Obviously no such data constructor exists. A data constructor of this type would exist only if you wrote something like:<div><br></div><div><font face="monospace, monospace">    data MessageTree = MessageTree LogMessage</font></div><div><span style="font-family:monospace,monospace">                     | ...</span></div><div><span style="font-family:monospace,monospace"><br></span></div>which would not make sense.</div><div class="gmail_extra"><br><div class="gmail_quote">On 28 February 2015 at 19:09, Roelof Wobben <span dir="ltr"><<a href="mailto:r.wobben@home.nl" target="_blank">r.wobben@home.nl</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF" text="#000000">
    <div>I tried this : <br><span class="">
      <br>
      insert :: LogMessage -> MessageTree -> MessageTree<br></span>
      insert s = <br>
         case words s of <br>
             (_:_: "This is not the right format") -> MessageTree
      Leaf <br>
             _                                     -> MessageTree
      Node LogMessage Leaf <br>
          <br>
      <br>
      But I see this errormessages which I do not understand : <br>
      <br>
      <br>
      <div>
        <div>src/LogAnalysis.hs@38:49-38:60 </div>
        <div><span>Not in scope: data constructor
          </span>
          <div style="font-size:14px"><span>MessageTree</span></div>
        </div>
      </div>
      <div>
        <div>src/LogAnalysis.hs@39:49-39:60 </div>
        <div><span>Not in scope: data constructor
          </span>
          <div style="font-size:14px"><span>MessageTree<br>
              <br>
            </span></div>
        </div>
      </div>
      <br>
      <br>
      Mike Meyer schreef op 28-2-2015 om 12:17:<br>
    </div><div><div class="h5">
    <blockquote type="cite">
      <div dir="ltr">
        <div class="gmail_extra">
          <div class="gmail_quote">On Sat, Feb 28, 2015 at 5:07 AM,
            Roelof Wobben <span dir="ltr"><<a href="mailto:r.wobben@home.nl" target="_blank">r.wobben@home.nl</a>></span>
            wrote:<br>
            <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
              <div bgcolor="#FFFFFF" text="#000000">
                <div><br>
                  That part I understand .<br>
                  <br>
                  it's more how I do it here :<br>
                  <br>
                  Lets say I have this : <br>
                  <br>
                  data MessageType = Info<br>
                                   | Warning<br>
                                   | Error Int<br>
                    deriving (Show, Eq)<br>
                  <br>
                  type TimeStamp = Int<br>
                  <br>
                  data LogMessage = LogMessage MessageType TimeStamp
                  String<br>
                                  | Unknown String<br>
                    deriving (Show, Eq)<br>
                  <br>
                  data MessageTree = Leaf<br>
                                   | Node MessageTree LogMessage
                  MessageTree<br>
                    deriving (Show, Eq)<br>
                  <br>
                  Now I have to put all the LogMessages in a binary
                  tree.<br>
                  with this signature : insert :: LogMessage ->
                  MessageTree -> MessageTree<br>
                  <br>
                  I think I need recursion here but I still not see how
                  I can make the clauses. <br>
                  Normally you can say somethig like this  [] -> 0 
                  or  1 ->   but here it seems to be all seperate
                  logMessages <br>
                </div>
              </div>
            </blockquote>
            <div><br>
            </div>
            <div>Whether you need recursion or not depends on where
              you're to insert the message. For instance, you could turn
              them into a list with:</div>
            <div><br>
            </div>
            <div>insert message tree = Node tree message Leaf</div>
            <div><br>
            </div>
            <div>Try drawing a few pictures of what that produces, and
              you'll see why it's probably not what you want.</div>
            <div><br>
            </div>
            <div>You should be able to tell by looking at the
              MessageTree type that you have two cases: one where you're
              passed something matching a Node, and one where you're
              passed something that's just a Leaf. The latter can't be
              recursive, so it's going to terminate any recursion.
              Following the advice given to you for the Hanoi problem,
              try writing it first.</div>
            <div><br>
            </div>
            <div>Then all you have to do is figure out how to handle the
              case where you're given a Node instead of a Leaf. 
              Figuring out where in the MessageTree you want to insert
              the Logmessage will probably be required to do that.<br>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
  </div></div></div>

<br>_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div>Regards</div><div dir="ltr"><div><br></div><div>Sumit Sahrawat</div></div></div></div></div></div></div>
</div>