add x y = x + y succc = add 1 poww(0) = 1 poww(n) = 2 * poww(n-1) lll([]) = 0 lll(x:xs) = 1 + lll(xs) selectEven xs = [ x | x<-xs , even x ] mxx(a,0) = a mxx(0,b) = b mxx(a,b) = 1 + mxx(a-1,b-1) data Tree a = Null | Node a (Tree a) (Tree a) depth Null = 0 depth(Node a b c) = 1 + mxx(depth(b),depth(c)) maxx Null = 0 maxx(Node a b c) = mxx(a,mxx(maxx(b),maxx(c))) zuj([],b:bs) = [] zuj(a:as,[]) = [] zuj(a:as,b:bs) = (a,b):zuj(as,bs) odzuj((a,b):as) = (a:rozzuja(as),b:rozzujb(as)) rozzuja([]) = [] rozzuja((c,d):ds) = c:rozzuja(ds) rozzujb([]) = [] rozzujb((e,f):fs) = f:rozzujb(fs) data Expr = Plus Expr Expr | Mult Expr Expr | Const Int eva(Const a) = a eva(Mult a b) = eva(a)*eva(b) eva(Plus a b) = eva(a)+eva(b) data Tre = Nil | Nod Int Tre Tre data BVS a = Nul | Noe (BVS a) a (BVS a) inor (Noe Nul d Nul) = d:[] inor (Noe a b c) = inor(a)++b:inor(c) pod((Noe a b c),d) = b < d nad((Noe a b c),d) = b > d lbvs((Noe Nul b Nul),d) | b < d = 1 | b >= d = 0 lbvs((Noe a b c),d) | pod(a,d) && (b < d) && pod(c,d) = 1 * lbvs(a,b) * rbvs(c,b) | nad(a,d) || (b > d) || nad(c,d) = 0 rbvs((Noe Nul b Nul),d) | b > d = 1 | b <= d = 0 rbvs((Noe a b c),d) | nad(a,d) && (b > d) && nad(c,d) = 1 * lbvs(a,b) * rbvs(c,b) | pod(a,d) || (b < d) || pod(c,d) = 0 isBVS (Noe Nul d Nul) = 1 isBVS (Noe a b c) = lbvs(a,b) * rbvs(c,b)