Hello Max.cs, Thursday, January 1, 2009, 11:36:24 AM, you wrote:
seems that you come from dynamic languages :) Haskell has static typing meaning that your function can accept either Tree or a as arguments. so you should convert a to Tree explicitly, using Leaf > > > thanks! > > > > 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? > > > > Thanks, > > Max > > > > > > > From: Brandon S. Allbery KF8NH > > Sent: Thursday, January 01, 2009 7:35 AM > > To: Max.cs > > Cc: Brandon S. Allbery KF8NH ; beginn...@haskell.org ; > haskell-cafe@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 > > > > -- Best regards, Bulat mailto:bulat.zigans...@gmail.com _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe