anchor.diff:          return new AtomCloudVector<'T>(None, partitions, cacheAtom) :> CloudVector<'T>
       }
   
  +    /// <summary>
  +    ///     Creates a cloudvector instance using a collection of cloud files and provided deserializer method.
  +    /// </summary>
  +    /// <param name="files">Input file paths.</param>
  +    /// <param name="deserializer">Deserializer lambda for given file.</param>
  +    /// <param name="enableCaching">Enable in-memory caching for CloudVector instance. Defaults to true.</param>
  +    static member OfCloudFiles(files : seq<string>, deserializer : Stream -> seq<'T>, ?enableCaching) = cloud {
  +        let! partitions = 
  +            files 
  +            |> Seq.map (fun f -> CloudSequence.FromFile(f, deserializer, force = false))
  +            |> Cloud.Parallel
  +            |> Cloud.ToLocal
  +
  +        return! CloudVector.OfPartitions(partitions, ?enableCaching = enableCaching)
  +    }
  +
  +    /// <summary>
  +    ///     Merge a collection of cloud vectors into a single instance.
  +    /// </summary>
  +    /// <param name="components">CloudVector components.</param>
       static member Merge(components : seq<CloudVector<'T>>) : CloudVector<'T> =
           let components = 
               components
  
positive.code: ﻿namespace MBrace.Streams
  
  open System.Collections.Generic
  
  open MBrace
  
negative.code:             |> Cloud.Ignore
      }
  
  /// Cloud vector implementation that results from concatennation of multiple cloudvectors
  type internal ConcatenatedCloudVector<'T>(components : CloudVector<'T> []) =
      inherit CloudVector<'T> ()
  
  