Skip to content

Instantly share code, notes, and snippets.

@thealmarty
Created January 1, 2019 23:06
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/a4f585f6f569544a00fdca048df6ab83 to your computer and use it in GitHub Desktop.
Save thealmarty/a4f585f6f569544a00fdca048df6ab83 to your computer and use it in GitHub Desktop.
A modified zip function in OCaml that output a list with the second input list's element repeated.
(* 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_repeat_input2 function.*)
let zip_repeat_input2 = unfold
(* Define p.*)
(fun x y -> ((List.length x = 0) || (List.length y = 0)))
(* Define g.*)
(fun x y -> ( (List.hd x, List.hd y, 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