ML reference type and mutable data
(* checking if two lists are equal *)
let rec list_equals = function
([],[]) -> true
|([],_) -> false
|(_,[]) -> false
|(x::xs,y::ys) -> if x = y then list_equals (xs, ys) else false;;
list_equals ([],[]);;
list_equals ([7], []);;
list_equals ([7;2], [7]);;
list_equals ([7;2], [7;2]);;
(* Pattern matching cannot check for equality of variables *)
(* THIS IS NOT GOING TO WORK: *)
let rec list_equals = function
([],[]) -> true
|([],_) -> false
|(_,[]) -> false
|(x::xs,x::ys) -> list_equals (xs, ys)
| _ -> false;;
CSci 4651 course.