[Haskell-cafe] pattern matching on date type

Max.cs max.cs.2009 at googlemail.com
Thu Jan 1 03:36:24 EST 2009


suppose we have 

> data Tree a = Leaf a | Branch (Tree a) (Tree a) deriving Show

and how I could define a function foo :: a -> Tree a that

foo a = Leaf a         where a is not a type of Tree
foo b = b                 where b is one of the type of Tree (Leaf or Branch) ?

The following code seems not working......

foo (Leaf a) = a
foo a = Leaf a

saying 'Couldn't match expected type `a' against inferred type `Btree a''

any idea?


From: Brandon S. Allbery KF8NH 
Sent: Thursday, January 01, 2009 7:35 AM
To: Max.cs 
Cc: Brandon S. Allbery KF8NH ; beginners at haskell.org ; haskell-cafe at haskell.org 
Subject: Re: [Haskell-cafe] definition of data

On 2009 Jan 1, at 2:32, Max.cs wrote: 
  data Tree a = a | Branch (Tree a) (Tree a) deriving Show

  but it seems not accpetable in haskell ?

You need a constructor in both legs of the type:

> data Tree a = Leaf a | Branch (Tree a) (Tree a) deriving Show

brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allbery at kf8nh.com
system administrator [openafs,heimdal,too many hats] allbery at ece.cmu.edu
electrical and computer engineering, carnegie mellon university    KF8NH

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20090101/f7240635/attachment.htm

More information about the Haskell-Cafe mailing list