[Haskell-cafe] Primitive Recursive Algebraic Types

Alexteslin alexteslin at yahoo.co.uk
Thu Aug 2 14:15:01 EDT 2007




Alexteslin wrote:
> 
> Hi, I am doing some simple exercises about recursive algebraic types and
> this particular exercise asks to define a function which counts the number
> of operators in an expression.  I defined the function below, but i am not
> sure if on the second line changing from "evalLength (Lit n) = n" to "(Lit
> n) = 0" is the right solution.  although the function produces correct
> result.
> 
> data Expr = Lit Int | Add Expr Expr |
> 		Sub Expr Expr
> 		deriving (Eq, Show)
> 
> evalLength :: Expr -> Int
> evalLength (Lit n) = 0
> evalLength (Add e1 e2) = 1 + (evalLength e1) + (evalLength e2)
> evalLength (Sub e1 e2) = 1 + (evalLength e1) - (evalLength e2)
> 
> 
> Thank you 
> 


It actually doesn't work.  Initially i tested on Add operator only.  But
whith Sub operator it produces wrong result.
-- 
View this message in context: http://www.nabble.com/Primitive-Recursive-Algebraic-Types-tf4207521.html#a11969804
Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com.



More information about the Haskell-Cafe mailing list