title: Replace, Insert, Delete operations on IEnumerable
body: <p>I have a library that only accepts a proprietary immutable collection type. I would like to have a function that accepts one of these collections and performs some changes to this collection by returning a new collection that contains the changes made. </p>
  
  <p>I would like to use a LINQ syntax instead of copying this collection to a List and back.</p>
  
  <p>Add operations is easy for me: concat the enumerable with another one.
  But what about Replace (at the given index, return the value given instead of that IEnumerable's value), Insert (at given index, return the given value and then continue iterating over the IEnumerable) or Delete (at given index, skip the IEnumerable's value)?</p>
  
  <p>Are there functions like this available in the .NET framework or in another library? If not, how would I go about implementing these functions?</p>