[Haskell-cafe] pattern matching on date type

2009-01-01 Thread Max.cs
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


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


___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] pattern matching on date type

2009-01-01 Thread Bulat Ziganshin
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,
 Bulatmailto:bulat.zigans...@gmail.com

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe