
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 ; beginners@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.Ziganshin@gmail.com