All pastes #198073 Raw Edit

Anonymous

public text v1 · immutable
#198073 ·published 2006-10-11 18:57 UTC
rendered paste body
module Overload where

--12.8
--instance (Ord a, Ord b) => Ord (a,b) where
--max, min :: a-> a -> a

--instance Ord b => Ord [b] where 


--14.16 + 14.17
data Expr = Lit Int | Add Expr Expr | Sub Expr Expr | Mul Expr Expr | Div Expr Expr

eval :: Expr -> Int
eval (Lit n)    = n
eval (Add e1 e2) = (eval e1) + (eval e2)
eval (Sub e1 e2) = (eval e1) - (eval e2)
eval (Mul e1 e2) = (eval e1) * (eval e2)
eval (Div e1 e2) = div (eval e1) (eval e2)


size :: Expr -> Int
size (Lit n) 		= 0
size (Add e1 e2) 	= 1 + size (e1) + size (e2)
size (Sub e1 e2) 	= 1 + size (e1) + size (e2)
size (Mul e1 e2) 	= 1 + size (e1) + size (e2)
size (Div e1 e2) 	= 1 + size (e1) + size (e2)

--14.17