// get rid of leading Zero's
let rec dropleadingzeros l =
  match l with
    [] -> []
  | (Zero::xs) -> dropleadingzeros xs
  | x -> x


// add n leading Zero's
let rec padby n l = if n <= 0 then l else padby (n-1) (Zero::l);;
// pad two lists to the same length
let rec pad (l1, l2) =
  let len1 = length l1
  let len2 = length l2
  if (len1 = len2) then (l1,l2)  
  else if (len1 < len2) then (padby (len2-len1) l1, l2)
  else (l1, padby  (len1-len2) l2) ;;