equal
deleted
inserted
replaced
54 (* a "total" version of tl: *) |
54 (* a "total" version of tl: *) |
55 ttl_Nil "ttl([]) = []" |
55 ttl_Nil "ttl([]) = []" |
56 ttl_Cons "ttl(x#xs) = xs" |
56 ttl_Cons "ttl(x#xs) = xs" |
57 primrec "op mem" list |
57 primrec "op mem" list |
58 mem_Nil "x mem [] = False" |
58 mem_Nil "x mem [] = False" |
59 mem_Cons "x mem (y#ys) = if (y=x) True (x mem ys)" |
59 mem_Cons "x mem (y#ys) = (if y=x then True else x mem ys)" |
60 primrec list_all list |
60 primrec list_all list |
61 list_all_Nil "list_all P [] = True" |
61 list_all_Nil "list_all P [] = True" |
62 list_all_Cons "list_all P (x#xs) = (P(x) & list_all P xs)" |
62 list_all_Cons "list_all P (x#xs) = (P(x) & list_all P xs)" |
63 primrec map list |
63 primrec map list |
64 map_Nil "map f [] = []" |
64 map_Nil "map f [] = []" |
66 primrec "op @" list |
66 primrec "op @" list |
67 append_Nil "[] @ ys = ys" |
67 append_Nil "[] @ ys = ys" |
68 append_Cons "(x#xs)@ys = x#(xs@ys)" |
68 append_Cons "(x#xs)@ys = x#(xs@ys)" |
69 primrec filter list |
69 primrec filter list |
70 filter_Nil "filter P [] = []" |
70 filter_Nil "filter P [] = []" |
71 filter_Cons "filter P (x#xs) = if (P x) (x#filter P xs) (filter P xs)" |
71 filter_Cons "filter P (x#xs) = (if P x then x#filter P xs else filter P xs)" |
72 primrec foldl list |
72 primrec foldl list |
73 foldl_Nil "foldl f a [] = a" |
73 foldl_Nil "foldl f a [] = a" |
74 foldl_Cons "foldl f a (x#xs) = foldl f (f a x) xs" |
74 foldl_Cons "foldl f a (x#xs) = foldl f (f a x) xs" |
75 primrec length list |
75 primrec length list |
76 length_Nil "length([]) = 0" |
76 length_Nil "length([]) = 0" |