<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content=text/html;charset=iso-8859-1>
<META content="MSHTML 6.00.6001.18183" name=GENERATOR></HEAD>
<BODY id=MailContainerBody
style="PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-TOP: 15px; WORD-WRAP: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space"
leftMargin=0 topMargin=0 CanvasTabStop="true" name="Compose message area">
<DIV><FONT face=Calibri>thanks!</FONT></DIV>
<DIV><FONT face=Calibri></FONT> </DIV>
<DIV><FONT face=Calibri>suppose we have </FONT></DIV>
<DIV><FONT face=Calibri></FONT> </DIV>
<DIV><FONT face=Calibri>> data Tree a = Leaf a | Branch (Tree a) (Tree a)
deriving Show</FONT></DIV>
<DIV><FONT face=Calibri></FONT> </DIV>
<DIV><FONT face=Calibri>and how I could define a function </FONT><FONT
face=Calibri>foo :: a -> Tree a that</FONT></DIV>
<DIV><FONT face=Calibri></FONT> </DIV>
<DIV><FONT face=Calibri>foo a = Leaf
a where a is not a type of
Tree</FONT></DIV>
<DIV><FONT face=Calibri>foo b =
b where
b is one of the type of Tree (Leaf or Branch) ?</FONT></DIV>
<DIV><FONT face=Calibri></FONT> </DIV>
<DIV><FONT face=Calibri>The following code seems not working......</FONT></DIV>
<DIV><FONT face=Calibri></FONT> </DIV>
<DIV><FONT face=Calibri>foo (Leaf a) = a</FONT></DIV>
<DIV><FONT face=Calibri>foo a = Leaf a</FONT></DIV>
<DIV><FONT face=Calibri></FONT> </DIV>
<DIV><FONT face=Calibri>saying 'Couldn't match expected type `a' against
inferred type `Btree a''</FONT></DIV>
<DIV><FONT face=Calibri></FONT> </DIV>
<DIV><FONT face=Calibri>any idea?</FONT></DIV>
<DIV><FONT face=Calibri></FONT> </DIV>
<DIV><FONT face=Calibri>Thanks,</FONT></DIV>
<DIV><FONT face=Calibri>Max</FONT></DIV>
<DIV><FONT face=Calibri></FONT> </DIV>
<DIV style="FONT: 10pt Tahoma">
<DIV><BR></DIV>
<DIV style="BACKGROUND: #f5f5f5">
<DIV style="font-color: black"><B>From:</B> <A
title="mailto:allbery@ece.cmu.edu CTRL + Click to follow link"
href="mailto:allbery@ece.cmu.edu">Brandon S. Allbery KF8NH</A> </DIV>
<DIV><B>Sent:</B> Thursday, January 01, 2009 7:35 AM</DIV>
<DIV><B>To:</B> <A
title="mailto:max.cs.2009@googlemail.com CTRL + Click to follow link"
href="mailto:max.cs.2009@googlemail.com">Max.cs</A> </DIV>
<DIV><B>Cc:</B> <A
title="mailto:allbery@ece.cmu.edu CTRL + Click to follow link"
href="mailto:allbery@ece.cmu.edu">Brandon S. Allbery KF8NH</A> ; <A
title="mailto:beginners@haskell.org CTRL + Click to follow link"
href="mailto:beginners@haskell.org">beginners@haskell.org</A> ; <A
title="mailto:haskell-cafe@haskell.org CTRL + Click to follow link"
href="mailto:haskell-cafe@haskell.org">haskell-cafe@haskell.org</A> </DIV>
<DIV><B>Subject:</B> Re: [Haskell-cafe] definition of data</DIV></DIV></DIV>
<DIV><BR></DIV>
<DIV>
<DIV>On 2009 Jan 1, at 2:32, Max.cs wrote: </DIV>
<BLOCKQUOTE type="cite">
<DIV id=MailContainerBody
style="PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-TOP: 15px"
name="Compose message area" leftmargin="0" topmargin="0" canvastabstop="true">
<DIV><FONT face=Calibri>data Tree a = a | Branch (Tree a) (Tree a)
deriving Show</FONT></DIV>
<DIV><FONT face=Calibri></FONT> </DIV>
<DIV><FONT face=Calibri>but it seems not accpetable in haskell ?</FONT></DIV>
<DIV><FONT face=Calibri></FONT></DIV></DIV></BLOCKQUOTE><BR></DIV>
<DIV>You need a constructor in both legs of the type:</DIV>
<DIV><BR></DIV>
<DIV>> data Tree a = Leaf a | Branch (Tree a) (Tree a) deriving Show</DIV>
<DIV><BR></DIV>
<DIV apple-content-edited="true"><SPAN class=Apple-style-span
style="WORD-SPACING: 0px; FONT: 11px Helvetica; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; border-spacing: 0px 0px; -khtml-text-decorations-in-effect: none; -apple-text-size-adjust: auto; orphans: 2; widows: 2">
<DIV
style="WORD-WRAP: break-word; -khtml-nbsp-mode: space; -khtml-line-break: after-white-space"><SPAN
class=Apple-style-span
style="WORD-SPACING: 0px; FONT: 11px Helvetica; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; border-spacing: 0px 0px; -khtml-text-decorations-in-effect: none; -apple-text-size-adjust: auto; orphans: 2; widows: 2"><SPAN
class=Apple-style-span
style="WORD-SPACING: 0px; FONT: 11px Helvetica; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; border-spacing: 0px 0px; -khtml-text-decorations-in-effect: none; -apple-text-size-adjust: auto; orphans: 2; widows: 2">
<DIV><FONT class=Apple-style-span face=Monaco><SPAN class=Apple-style-span
style="FONT-FAMILY: Monaco"><SPAN class=Apple-style-span
style="FONT-FAMILY: Monaco">-- </SPAN></SPAN></FONT></DIV>
<DIV><FONT class=Apple-style-span face=Monaco><SPAN class=Apple-style-span
style="FONT-FAMILY: Monaco"><SPAN class=Apple-style-span
style="FONT-FAMILY: Monaco">brandon s. allbery
[solaris,freebsd,perl,pugs,haskell] <A
href="mailto:allbery@kf8nh.com">allbery@kf8nh.com</A></SPAN></SPAN></FONT></DIV>
<DIV><FONT class=Apple-style-span face=Monaco><SPAN class=Apple-style-span
style="FONT-FAMILY: Monaco"><SPAN class=Apple-style-span
style="FONT-FAMILY: Monaco">system administrator [openafs,heimdal,too many hats]
<A
href="mailto:allbery@ece.cmu.edu">allbery@ece.cmu.edu</A></SPAN></SPAN></FONT></DIV>
<DIV><FONT class=Apple-style-span face=Monaco><SPAN class=Apple-style-span
style="FONT-FAMILY: Monaco"><SPAN class=Apple-style-span
style="FONT-FAMILY: Monaco">electrical and computer engineering, carnegie mellon
university KF8NH</SPAN></SPAN></FONT></DIV><SPAN
class=Apple-style-span
style="WORD-SPACING: 0px; FONT: 11px Helvetica; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; border-spacing: 0px 0px; -khtml-text-decorations-in-effect: none; -apple-text-size-adjust: auto; orphans: 2; widows: 2"><BR
class=Apple-interchange-newline></SPAN></SPAN></SPAN></DIV></SPAN></DIV><BR></BODY></HTML>