diff --git a/src/FSharp.Control.TaskSeq/TaskSeq.fsi b/src/FSharp.Control.TaskSeq/TaskSeq.fsi
index acb4274d..1aa838cd 100644
--- a/src/FSharp.Control.TaskSeq/TaskSeq.fsi
+++ b/src/FSharp.Control.TaskSeq/TaskSeq.fsi
@@ -48,6 +48,7 @@ module TaskSeq =
///
/// Returns the length of the sequence of all items for which the returns true.
/// This operation requires the whole sequence to be evaluated and should not be used on potentially infinite sequences.
+ /// If is asynchronous, consider using .
///
///
/// A function to test whether an item in the input sequence should be included in the count.
@@ -58,7 +59,7 @@ module TaskSeq =
///
/// Returns the length of the sequence of all items for which the returns true.
/// This operation requires the whole sequence to be evaluated and should not be used on potentially infinite sequences.
- /// If does not need to be asynchronous, consider using .
+ /// If is synchronous, consider using .
///
///
/// A function to test whether an item in the input sequence should be included in the count.
@@ -279,6 +280,7 @@ module TaskSeq =
///
/// The input resize array.
/// The resulting task sequence.
+ /// Thrown when the input resize array is null.
val ofResizeArray: source: ResizeArray<'T> -> taskSeq<'T>
///
@@ -374,6 +376,7 @@ module TaskSeq =
///
///
/// The input task sequence.
+ /// The resulting task sequence.
/// Thrown when the input sequence is null.
/// Thrown when the function is unable to cast an item to the target type.
val unbox<'U when 'U: struct> : source: taskSeq -> taskSeq<'U>
@@ -384,6 +387,7 @@ module TaskSeq =
///
///
/// The input task sequence.
+ /// The resulting task sequence.
/// Thrown when the input sequence is null.
/// Thrown when the function is unable to cast an item to the target type.
val cast: source: taskSeq -> taskSeq<'U>
@@ -395,6 +399,7 @@ module TaskSeq =
///
/// A function to apply to each element of the task sequence.
/// The input task sequence.
+ /// A .
/// Thrown when the input sequence is null.
val iter: action: ('T -> unit) -> source: taskSeq<'T> -> Task
@@ -406,6 +411,7 @@ module TaskSeq =
///
/// A function to apply to each element of the task sequence that can also access the current index.
/// The input task sequence.
+ /// A .
/// Thrown when the input sequence is null.
val iteri: action: (int -> 'T -> unit) -> source: taskSeq<'T> -> Task
@@ -416,6 +422,7 @@ module TaskSeq =
///
/// An asynchronous function to apply to each element of the task sequence.
/// The input task sequence.
+ /// A .
/// Thrown when the input sequence is null.
val iterAsync: action: ('T -> #Task) -> source: taskSeq<'T> -> Task
@@ -427,6 +434,7 @@ module TaskSeq =
///
/// An asynchronous function to apply to each element of the task sequence that can also access the current index.
/// The input task sequence.
+ /// A .
/// Thrown when the input sequence is null.
val iteriAsync: action: (int -> 'T -> #Task) -> source: taskSeq<'T> -> Task
@@ -565,7 +573,7 @@ module TaskSeq =
///
///
/// The input task sequence.
- /// The first element of the task sequence, or None.
+ /// The first element of the task sequence, or .
/// Thrown when the input task sequence is null.
val tryHead: source: taskSeq<'T> -> Task<'T option>
@@ -585,7 +593,7 @@ module TaskSeq =
///
///
/// The input task sequence.
- /// The input task sequence minus the first element, or None.
+ /// The input task sequence minus the first element, or .
/// Thrown when the input task sequence is null.
val tryTail: source: taskSeq<'T> -> Task option>
@@ -653,7 +661,7 @@ module TaskSeq =
///
///
/// The input task sequence.
- /// The only element of the singleton task sequence, or None.
+ /// The only element of the singleton task sequence, or .
/// Thrown when the input task sequence is null.
val tryExactlyOne: source: taskSeq<'T> -> Task<'T option>
@@ -662,111 +670,184 @@ module TaskSeq =
///
///
/// The input task sequence.
- /// The only element of the singleton task sequence, or None.
+ /// The only element of the singleton task sequence, or .
/// Thrown when the input task sequence is null.
/// Thrown when the input sequence does not contain precisely one element.
val exactlyOne: source: taskSeq<'T> -> Task<'T>
///
/// Applies the given function to each element of the task sequence. Returns
- /// a sequence comprised of the results "x" for each element where
- /// the function returns .
+ /// a sequence comprised of the results where the function returns .
/// If is asynchronous, consider using .
///
+ ///
+ /// A function to transform items of type into options of type .
+ /// The input task sequence.
+ /// The resulting task sequence.
+ /// Thrown when the input task sequence is null.
val choose: chooser: ('T -> 'U option) -> source: taskSeq<'T> -> taskSeq<'U>
///
- /// Applies the given asynchronous function to each element of the task sequence. Returns
- /// a sequence comprised of the results "x" for each element where
- /// the function returns .
- /// If does not need to be asynchronous, consider using .
+ /// Applies the given asynchronous function to each element of the task sequence.
+ /// Returns a sequence comprised of the results where the function returns a result
+ /// of .
+ /// If is synchronous, consider using .
///
+ ///
+ /// An asynchronous function to transform items of type into options of type .
+ /// The input task sequence.
+ /// The resulting task sequence.
+ /// Thrown when the input task sequence is null.
val chooseAsync: chooser: ('T -> #Task<'U option>) -> source: taskSeq<'T> -> taskSeq<'U>
///
/// Returns a new collection containing only the elements of the collection
- /// for which the given function returns .
+ /// for which the given function returns .
/// If is asynchronous, consider using .
///
+ ///
+ /// A function to test whether an item in the input sequence should be included in the output or not.
+ /// The input task sequence.
+ /// The resulting task sequence.
+ /// Thrown when the input task sequence is null.
val filter: predicate: ('T -> bool) -> source: taskSeq<'T> -> taskSeq<'T>
///
- /// Yields items from the source while the function returns .
- /// The first result concludes consumption of the source.
+ /// Returns a new collection containing only the elements of the collection
+ /// for which the given function returns .
+ /// If is synchronous, consider using .
+ ///
+ ///
+ /// An asynchronous function to test whether an item in the input sequence should be included in the output or not.
+ /// The input task sequence.
+ /// The resulting task sequence.
+ /// Thrown when the input task sequence is null.
+ val filterAsync: predicate: ('T -> #Task) -> source: taskSeq<'T> -> taskSeq<'T>
+
+ ///
+ /// Returns a sequence that, when iterated, yields elements of the underlying sequence while the
+ /// given function returns , and then returns no further elements.
+ /// The first element where the predicate returns is not included in the resulting sequence
+ /// (see also ).
/// If is asynchronous, consider using .
///
+ ///
+ /// A function that evaluates to false when no more items should be returned.
+ /// The input task sequence.
+ /// The resulting task sequence.
+ /// Thrown when the input task sequence is null.
val takeWhile: predicate: ('T -> bool) -> source: taskSeq<'T> -> taskSeq<'T>
///
- /// Yields items from the source while the asynchronous function returns .
- /// The first result concludes consumption of the source.
- /// If does not need to be asynchronous, consider using .
+ /// Returns a sequence that, when iterated, yields elements of the underlying sequence while the
+ /// given asynchronous function returns , and then returns no further elements.
+ /// The first element where the predicate returns is not included in the resulting sequence
+ /// (see also ).
+ /// If is synchronous, consider using .
///
+ ///
+ /// An asynchronous function that evaluates to false when no more items should be returned.
+ /// The input task sequence.
+ /// The resulting task sequence.
+ /// Thrown when the input task sequence is null.
val takeWhileAsync: predicate: ('T -> #Task) -> source: taskSeq<'T> -> taskSeq<'T>
///
- /// Yields items from the source while the function returns .
- /// The first result concludes consumption of the source, but is included in the result.
+ /// Returns a sequence that, when iterated, yields elements of the underlying sequence until the given
+ /// function returns , returns that element
+ /// and then returns no further elements (see also ). This function returns
+ /// at least one element of a non-empty sequence, or the empty task sequence if the input is empty.
/// If is asynchronous, consider using .
- /// If the final item is not desired, consider using .
///
+ ///
+ /// A function that evaluates to false when no more items should be returned.
+ /// The input task sequence.
+ /// The resulting task sequence.
+ /// Thrown when the input task sequence is null.
val takeWhileInclusive: predicate: ('T -> bool) -> source: taskSeq<'T> -> taskSeq<'T>
///
- /// Yields items from the source while the asynchronous function returns .
- /// The first result concludes consumption of the source, but is included in the result.
- /// If does not need to be asynchronous, consider using .
- /// If the final item is not desired, consider using .
+ /// Returns a sequence that, when iterated, yields elements of the underlying sequence until the given
+ /// asynchronous function returns , returns that element
+ /// and then returns no further elements (see also ). This function returns
+ /// at least one element of a non-empty sequence, or the empty task sequence if the input is empty.
+ /// If is synchronous, consider using .
///
+ ///
+ /// An asynchronous function that evaluates to false when no more items should be returned.
+ /// The input task sequence.
+ /// The resulting task sequence.
+ /// Thrown when the input task sequence is null.
val takeWhileInclusiveAsync: predicate: ('T -> #Task) -> source: taskSeq<'T> -> taskSeq<'T>
///
- /// Returns a new collection containing only the elements of the collection
- /// for which the given asynchronous function returns .
- /// If does not need to be asynchronous, consider using .
- ///
- val filterAsync: predicate: ('T -> #Task) -> source: taskSeq<'T> -> taskSeq<'T>
-
- ///
- /// Applies the given function to successive elements of the task sequence
- /// in , returning the first result where the function returns .
+ /// Applies the given function to successive elements, returning the first result where
+ /// the function returns .
/// If is asynchronous, consider using .
///
+ /// A function to transform items of type into options of type .
+ /// The input task sequence.
+ /// The chosen element or .
+ /// Thrown when the input task sequence is null.
val tryPick: chooser: ('T -> 'U option) -> source: taskSeq<'T> -> Task<'U option>
///
- /// Applies the given asynchronous function to successive elements of the task sequence
- /// in , returning the first result where the function returns .
- /// If does not need to be asynchronous, consider using .
+ /// Applies the given asynchronous function to successive elements, returning the first result where
+ /// the function returns .
+ /// If is synchronous, consider using .
///
+ /// An asynchronous function to transform items of type into options of type .
+ /// The input task sequence.
+ /// The chosen element or .
+ /// Thrown when the input task sequence is null.
val tryPickAsync: chooser: ('T -> #Task<'U option>) -> source: taskSeq<'T> -> Task<'U option>
///
- /// Returns the first element of the task sequence in for which the given function
- /// returns . Returns if no such element exists.
+ /// Returns the first element for which the given function returns
+ /// . Returns if no such element exists.
/// If is asynchronous, consider using .
///
+ ///
+ /// A function that evaluates to a when given an item in the sequence.
+ /// The input task sequence.
+ /// The found element or .
+ /// Thrown when the input task sequence is null.
val tryFind: predicate: ('T -> bool) -> source: taskSeq<'T> -> Task<'T option>
///
- /// Returns the first element of the task sequence in for which the given asynchronous function
- /// returns . Returns if no such element exists.
- /// If does not need to be asynchronous, consider using .
+ /// Returns the first element for which the given asynchronous function returns
+ /// . Returns if no such element exists.
+ /// If is synchronous, consider using .
///
+ ///
+ /// An asynchronous function that evaluates to a when given an item in the sequence.
+ /// The input task sequence.
+ /// The found element or .
+ /// Thrown when the input task sequence is null.
val tryFindAsync: predicate: ('T -> #Task) -> source: taskSeq<'T> -> Task<'T option>
///
- /// Returns the index, starting from zero, of the task sequence in for which the given function
- /// returns . Returns if no such element exists.
+ /// Returns the index, starting from zero for which the given function returns
+ /// . Returns if no such element exists.
/// If is asynchronous, consider using .
///
+ ///
+ /// A function that evaluates to a when given an item in the sequence.
+ /// The input task sequence.
+ /// The found element or .
+ /// Thrown when the input task sequence is null.
val tryFindIndex: predicate: ('T -> bool) -> source: taskSeq<'T> -> Task
///
- /// Returns the index, starting from zero, of the task sequence in for which the given asynchronous function
- /// returns . Returns if no such element exists.
- /// If does not need to be asynchronous, consider using .
+ /// Returns the index, starting from zero for which the given asynchronous function returns
+ /// . Returns if no such element exists.
+ /// If is synchronous, consider using .
///
+ ///
+ /// An asynchronous function that evaluates to a when given an item in the sequence.
+ /// The input task sequence.
+ /// The found element or .
+ /// Thrown when the input task sequence is null.
val tryFindIndexAsync: predicate: ('T -> #Task) -> source: taskSeq<'T> -> Task
@@ -782,7 +863,7 @@ module TaskSeq =
///
/// Applies the given asynchronous function to successive elements of the task sequence
/// in , returning the first result where the function returns .
- /// If does not need to be asynchronous, consider using .
+ /// If is synchronous, consider using .
/// Thrown when every item of the sequence
/// evaluates to when the given function is applied.
///
@@ -800,7 +881,7 @@ module TaskSeq =
///
/// Returns the first element of the task sequence in for which the given
/// asynchronous function returns .
- /// If does not need to be asynchronous, consider using .
+ /// If is synchronous, consider using .
///
/// Thrown if no element returns when
/// evaluated by the function.
@@ -818,7 +899,7 @@ module TaskSeq =
///
/// Returns the index, starting from zero, of the task sequence in for which the given
/// asynchronous function returns .
- /// If does not need to be asynchronous, consider using .
+ /// If is synchronous, consider using .
///
///
/// Thrown if no element returns when
@@ -920,6 +1001,6 @@ module TaskSeq =
///
/// Applies the asynchronous function to each element in the task sequence,
/// threading an accumulator argument of type through the computation.
- /// If the accumulator function does not need to be asynchronous, consider using .
+ /// If the accumulator function is synchronous, consider using .
///
val foldAsync: folder: ('State -> 'T -> #Task<'State>) -> state: 'State -> source: taskSeq<'T> -> Task<'State>