Skip to content

Instantly share code, notes, and snippets.

@thealmarty
Created January 1, 2019 23:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save thealmarty/5fbe80c8b3a4cab45d2ef913d5574a84 to your computer and use it in GitHub Desktop.
Save thealmarty/5fbe80c8b3a4cab45d2ef913d5574a84 to your computer and use it in GitHub Desktop.
A modified zip function in OCaml that sums up the two elements of the input lists in the second item of the output tuple.
(* Define the unfold function.*)
let rec unfold p g b1 b2 =
if p b1 b2 then [] else
(match g b1 b2 with (a, (b1prime, b2prime)) ->
a :: unfold p g b1prime b2prime)
;;
(* Define the zip_sum function.*)
let zip_sum = unfold
(* Define p.*)
(fun x y -> ((List.length x = 0) || (List.length y = 0)))
(* Define g.*)
(fun x y -> ( (List.hd x, (List.hd x + List.hd y)), (List.tl x, List.tl y)))
;;
@thealmarty
Copy link
Author

See my blog post.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment