[Haskell-beginners] Basic "data" question

Brent Yorgey byorgey at seas.upenn.edu
Thu Nov 24 15:56:48 CET 2011


On Thu, Nov 24, 2011 at 10:43:58AM +0000, Costello, Roger L. wrote:
> Hi Folks,
> 
> I am trying to define a data type for this:
> 
>     A Lambda term is one of these:
>         - Variable
>         - Application of a Lambda term to a Lambda term
>         - Abstraction of a Variable in a Lambda term
> 
> Here's an example of a Lambda term:
> 
> term = Abstraction (Variable X) (Application (Variable X) (Variable Y))
> 
> Is there a way to define Lambda term?
> 
> Here's an attempt at defining it:
> 
> data Var = V | W | X | Y | Z
> 
> data Lambda = Variable Var | Application Lambda Lambda | Abstraction
> (Variable Var) Lambda

The right way to do it would be

  data Var = V | W | X | Y | Z

  data Lambda = Variable Var | Application Lambda Lambda | Abstraction Var Lambda

However, I also note that it is a bit strange to use an enumeration
type for your variables; what if you need more than five?

-Brent



More information about the Beginners mailing list