Recommended patterns and techniques for Seqs (especially when memoized)

Something like that (completely untested):

let rec add fs gs =
  let value =
    lazy Seq.(
      match fs (), gs () with
      | Cons (f, fs'), Cons (g, gs') -> Cons (f + g, add fs' gs')
      | (Cons _ as fs), Nil -> fs
      | Nil, (Cons _ as gs) -> gs
      | Nil, Nil -> Nil) in
  fun () -> Lazy.force value
1 Like