merge_with functions on lazy iterator

Currently it to fully expands the iterator into a list.
This could be improved in the future