diff --git a/src/fsharp/FSharp.Core/Linq.fsi b/src/fsharp/FSharp.Core/Linq.fsi
index cc62fe99b58..24f61321b16 100644
--- a/src/fsharp/FSharp.Core/Linq.fsi
+++ b/src/fsharp/FSharp.Core/Linq.fsi
@@ -16,10 +16,12 @@ open Microsoft.FSharp.Quotations
/// Library functionality associated with converting F# quotations to .NET LINQ expression trees.
///
module LeafExpressionConverter =
+ ///
/// When used in a quotation, this function indicates a specific conversion
/// should be performed when converting the quotation to a LINQ expression.
///
/// This function should not be called directly.
+ ///
//
// NOTE: when an F# expression tree is converted to a Linq expression tree using ToLinqExpression
// the transformation of LinqExpressionHelper(e) is the same as the transformation of
@@ -29,36 +31,60 @@ module LeafExpressionConverter =
//[]
val ImplicitExpressionConversionHelper : 'T -> Expression<'T>
+ ///
/// When used in a quotation, this function indicates a specific conversion
/// should be performed when converting the quotation to a LINQ expression.
///
/// This function should not be called directly.
+ ///
//[]
val MemberInitializationHelper : 'T -> 'T
+ ///
/// When used in a quotation, this function indicates a specific conversion
/// should be performed when converting the quotation to a LINQ expression.
///
/// This function should not be called directly.
+ ///
//[]
val NewAnonymousObjectHelper : 'T -> 'T
+ ///
/// Converts a subset of F# quotations to a LINQ expression, for the subset of LINQ expressions represented by the
/// expression syntax in the C# language.
+ ///
+ ///
+ ///
val QuotationToExpression : Expr -> Expression
+ ///
/// Converts a subset of F# quotations to a LINQ expression, for the subset of LINQ expressions represented by the
/// expression syntax in the C# language.
+ ///
+ ///
+ ///
val QuotationToLambdaExpression : Expr<'T> -> Expression<'T>
+ ///
/// Evaluates a subset of F# quotations by first converting to a LINQ expression, for the subset of LINQ expressions represented by the
/// expression syntax in the C# language.
+ ///
+ ///
+ ///
val EvaluateQuotation : Expr -> obj
+ ///
/// A runtime helper used to evaluate nested quotation literals.
+ ///
+ ///
+ ///
val SubstHelper : Expr * Var[] * obj[] -> Expr<'T>
+ ///
/// A runtime helper used to evaluate nested quotation literals.
+ ///
+ ///
+ ///
val SubstHelperRaw : Expr * Var[] * obj[] -> Expr
val internal (|SpecificCallToMethod|_|) : System.RuntimeMethodHandle -> (Expr -> (Expr option * Type list * Expr list) option)
diff --git a/src/fsharp/FSharp.Core/Nullable.fsi b/src/fsharp/FSharp.Core/Nullable.fsi
index 0b18896ef8c..6479a0d1732 100644
--- a/src/fsharp/FSharp.Core/Nullable.fsi
+++ b/src/fsharp/FSharp.Core/Nullable.fsi
@@ -5,107 +5,172 @@ namespace Microsoft.FSharp.Linq
open System
open Microsoft.FSharp.Core
-/// Operators for working with nullable values
+/// Operators for working with nullable values, primarily used on F# queries.
[]
module NullableOperators =
- /// The '>=' operator where a nullable value appears on the left
+ /// The '>=' operator where a nullable value appears on the left
+ ///
+ ///
val ( ?>= ) : Nullable<'T> -> 'T -> bool when 'T : comparison
- /// The '>' operator where a nullable value appears on the left
+ /// The '>' operator where a nullable value appears on the left
+ ///
+ ///
val ( ?> ) : Nullable<'T> -> 'T -> bool when 'T : comparison
- /// The '<=' operator where a nullable value appears on the left
+ /// The '<=' operator where a nullable value appears on the left
+ ///
+ ///
val ( ?<= ) : Nullable<'T> -> 'T -> bool when 'T : comparison
- /// The '<' operator where a nullable value appears on the left
+ /// The '<' operator where a nullable value appears on the left
+ ///
+ ///
val ( ?< ) : Nullable<'T> -> 'T -> bool when 'T : comparison
- /// The '=' operator where a nullable value appears on the left
+ /// The '=' operator where a nullable value appears on the left
+ ///
+ ///
val ( ?= ) : Nullable<'T> -> 'T -> bool when 'T : equality
- /// The '<>' operator where a nullable value appears on the left
+ /// The '<>' operator where a nullable value appears on the left
+ ///
+ ///
val ( ?<> ) : Nullable<'T> -> 'T -> bool when 'T : equality
- /// The '>=' operator where a nullable value appears on the right
+ /// The '>=' operator where a nullable value appears on the right
+ ///
+ ///
val ( >=? ) : 'T -> Nullable<'T> -> bool when 'T : comparison
- /// The '>' operator where a nullable value appears on the right
+ /// The '>' operator where a nullable value appears on the right
+ ///
+ ///
val ( >? ) : 'T -> Nullable<'T> -> bool when 'T : comparison
- /// The '<=' operator where a nullable value appears on the right
+ /// The '<=' operator where a nullable value appears on the right
+ ///
+ ///
val ( <=? ) : 'T -> Nullable<'T> -> bool when 'T : comparison
- /// The '<' operator where a nullable value appears on the right
+ /// The '<' operator where a nullable value appears on the right
+ ///
+ ///
val ( ) : 'T -> Nullable<'T> -> bool when 'T : comparison
- /// The '=' operator where a nullable value appears on the right
+ /// The '=' operator where a nullable value appears on the right
+ ///
+ ///
val ( =? ) : 'T -> Nullable<'T> -> bool when 'T : equality
- /// The '<>' operator where a nullable value appears on the right
+ /// The '<>' operator where a nullable value appears on the right
+ ///
+ ///
val ( <>? ) : 'T -> Nullable<'T> -> bool when 'T : equality
- /// The '>=' operator where a nullable value appears on both left and right sides
+ /// The '>=' operator where a nullable value appears on both left and right sides
+ ///
+ ///
val ( ?>=? ) : Nullable<'T> -> Nullable<'T> -> bool when 'T : comparison
- /// The '>' operator where a nullable value appears on both left and right sides
+ /// The '>' operator where a nullable value appears on both left and right sides
+ ///
+ ///
val ( ?>? ) : Nullable<'T> -> Nullable<'T> -> bool when 'T : comparison
- /// The '<=' operator where a nullable value appears on both left and right sides
+ /// The '<=' operator where a nullable value appears on both left and right sides
+ ///
+ ///
val ( ?<=? ) : Nullable<'T> -> Nullable<'T> -> bool when 'T : comparison
- /// The '<' operator where a nullable value appears on both left and right sides
+ /// The '<' operator where a nullable value appears on both left and right sides
+ ///
+ ///
val ( ? ) : Nullable<'T> -> Nullable<'T> -> bool when 'T : comparison
- /// The '=' operator where a nullable value appears on both left and right sides
+ /// The '=' operator where a nullable value appears on both left and right sides
+ ///
+ ///
val ( ?=? ) : Nullable<'T> -> Nullable<'T> -> bool when 'T : equality
- /// The '<>' operator where a nullable value appears on both left and right sides
+ /// The '<>' operator where a nullable value appears on both left and right sides
+ ///
+ ///
val ( ?<>? ) : Nullable<'T> -> Nullable<'T> -> bool when 'T : equality
- /// The addition operator where a nullable value appears on the left
+ /// The addition operator where a nullable value appears on the left
+ ///
+ ///
val inline ( ?+ ) : Nullable< ^T1 > -> ^T2 -> Nullable< ^T3 > when (^T1 or ^T2) : (static member ( + ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int
- /// The addition operator where a nullable value appears on the right
+ /// The addition operator where a nullable value appears on the right
+ ///
+ ///
val inline ( +? ) : ^T1 -> Nullable< ^T2 > -> Nullable< ^T3 > when (^T1 or ^T2) : (static member ( + ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int
- /// The addition operator where a nullable value appears on both left and right sides
+ /// The addition operator where a nullable value appears on both left and right sides
+ ///
+ ///
val inline ( ?+? ) : Nullable< ^T1 > -> Nullable< ^T2 > -> Nullable< ^T3 > when (^T1 or ^T2) : (static member ( + ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int
- /// The subtraction operator where a nullable value appears on the left
+ /// The subtraction operator where a nullable value appears on the left
+ ///
+ ///
val inline ( ?- ) : Nullable< ^T1 > -> ^T2 -> Nullable< ^T3 > when (^T1 or ^T2) : (static member ( - ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int
- /// The subtraction operator where a nullable value appears on the right
+ /// The subtraction operator where a nullable value appears on the right
+ ///
+ ///
val inline ( -? ) : ^T1 -> Nullable< ^T2 > -> Nullable< ^T3 > when (^T1 or ^T2) : (static member ( - ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int
- /// The subtraction operator where a nullable value appears on both left and right sides
+ /// The subtraction operator where a nullable value appears on both left and right sides
+ ///
+ ///
val inline ( ?-? ) : Nullable< ^T1 > -> Nullable< ^T2 > -> Nullable< ^T3 > when (^T1 or ^T2) : (static member ( - ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int
- /// The multiplication operator where a nullable value appears on the left
+ /// The multiplication operator where a nullable value appears on the left
+ ///
+ ///
val inline ( ?* ) : Nullable< ^T1 > -> ^T2 -> Nullable< ^T3 > when (^T1 or ^T2) : (static member ( * ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int
- /// The multiplication operator where a nullable value appears on the right
+ /// The multiplication operator where a nullable value appears on the right
+ ///
+ ///
val inline ( *? ) : ^T1 -> Nullable< ^T2 > -> Nullable< ^T3 > when (^T1 or ^T2) : (static member ( * ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int
- /// The multiplication operator where a nullable value appears on both left and right sides
+ /// The multiplication operator where a nullable value appears on both left and right sides
+ ///
+ ///
val inline ( ?*? ) : Nullable< ^T1 > -> Nullable< ^T2 > -> Nullable< ^T3 > when (^T1 or ^T2) : (static member ( * ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int
-
- /// The modulus operator where a nullable value appears on the left
+ /// The modulus operator where a nullable value appears on the left
+ ///
+ ///
val inline ( ?% ) : Nullable< ^T1 > -> ^T2 -> Nullable< ^T3 > when (^T1 or ^T2) : (static member ( % ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int
- /// The modulus operator where a nullable value appears on the right
+ /// The modulus operator where a nullable value appears on the right
+ ///
+ ///
val inline ( %? ) : ^T1 -> Nullable< ^T2 > -> Nullable< ^T3 > when (^T1 or ^T2) : (static member ( % ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int
- /// The modulus operator where a nullable value appears on both left and right sides
+ /// The modulus operator where a nullable value appears on both left and right sides
+ ///
+ ///
val inline ( ?%? ) : Nullable< ^T1 > -> Nullable< ^T2 > -> Nullable< ^T3 > when (^T1 or ^T2) : (static member ( % ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int
- /// The division operator where a nullable value appears on the left
+ /// The division operator where a nullable value appears on the left
+ ///
+ ///
val inline ( ?/ ) : Nullable< ^T1 > -> ^T2 -> Nullable< ^T3 > when (^T1 or ^T2) : (static member ( / ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int
- /// The division operator where a nullable value appears on the right
+ /// The division operator where a nullable value appears on the right
+ ///
+ ///
val inline ( /? ) : ^T1 -> Nullable< ^T2 > -> Nullable< ^T3 > when (^T1 or ^T2) : (static member ( / ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int
- /// The division operator where a nullable value appears on both left and right sides
+ /// The division operator where a nullable value appears on both left and right sides
+ ///
+ ///
val inline ( ?/? ) : Nullable< ^T1 > -> Nullable< ^T2 > -> Nullable< ^T3 > when (^T1 or ^T2) : (static member ( / ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int
/// Functions for converting nullable values
@@ -116,9 +181,12 @@ module Nullable =
/// Converts the argument to byte. This is a direct conversion for all
/// primitive numeric types. The operation requires an appropriate
/// static conversion method on the input type.
+ ///
/// The input value.
///
/// The converted byte
+ ///
+ ///
[]
val inline byte : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> byte) and default ^T : int
@@ -129,6 +197,8 @@ module Nullable =
/// The input value.
///
/// The converted byte
+ ///
+ ///
[]
val inline uint8 : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> uint8) and default ^T : int
@@ -139,6 +209,8 @@ module Nullable =
/// The input value.
///
/// The converted sbyte
+ ///
+ ///
[]
val inline sbyte : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> sbyte) and default ^T : int
@@ -149,6 +221,8 @@ module Nullable =
/// The input value.
///
/// The converted sbyte
+ ///
+ ///
[]
val inline int8 : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> int8) and default ^T : int
@@ -159,6 +233,8 @@ module Nullable =
/// The input value.
///
/// The converted int16
+ ///
+ ///
[]
val inline int16 : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> int16) and default ^T : int
@@ -169,6 +245,8 @@ module Nullable =
/// The input value.
///
/// The converted uint16
+ ///
+ ///
[]
val inline uint16 : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> uint16) and default ^T : int
@@ -179,6 +257,8 @@ module Nullable =
/// The input value.
///
/// The converted int
+ ///
+ ///
[]
val inline int : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> int) and default ^T : int
@@ -189,6 +269,8 @@ module Nullable =
/// The input value.
///
/// The converted unsigned integer
+ ///
+ ///
[]
val inline uint: value: Nullable< ^T > -> Nullable when ^T :(static member op_Explicit: ^T -> uint) and default ^T : uint
@@ -197,6 +279,8 @@ module Nullable =
/// The input value.
///
/// The converted enum type.
+ ///
+ ///
[]
val inline enum : value:Nullable< int32 > -> Nullable< ^U > when ^U : enum
@@ -207,6 +291,8 @@ module Nullable =
/// The input value.
///
/// The converted int32
+ ///
+ ///
[]
val inline int32 : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> int32) and default ^T : int
@@ -217,6 +303,8 @@ module Nullable =
/// The input value.
///
/// The converted uint32
+ ///
+ ///
[]
val inline uint32 : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> uint32) and default ^T : int
@@ -227,6 +315,8 @@ module Nullable =
/// The input value.
///
/// The converted int64
+ ///
+ ///
[]
val inline int64 : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> int64) and default ^T : int
@@ -237,6 +327,8 @@ module Nullable =
/// The input value.
///
/// The converted uint64
+ ///
+ ///
[]
val inline uint64 : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> uint64) and default ^T : int
@@ -247,6 +339,8 @@ module Nullable =
/// The input value.
///
/// The converted float32
+ ///
+ ///
[]
val inline float32 : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> float32) and default ^T : int
@@ -257,6 +351,8 @@ module Nullable =
/// The input value.
///
/// The converted float
+ ///
+ ///
[]
val inline float : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> float) and default ^T : int
@@ -267,6 +363,8 @@ module Nullable =
/// The input value.
///
/// The converted float32
+ ///
+ ///
[]
val inline single : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> single) and default ^T : int
@@ -277,6 +375,8 @@ module Nullable =
/// The input value.
///
/// The converted float
+ ///
+ ///
[]
val inline double : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> double) and default ^T : int
@@ -287,6 +387,8 @@ module Nullable =
/// The input value.
///
/// The converted nativeint
+ ///
+ ///
[]
val inline nativeint : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> nativeint) and default ^T : int
@@ -297,6 +399,8 @@ module Nullable =
/// The input value.
///
/// The converted unativeint
+ ///
+ ///
[]
val inline unativeint : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> unativeint) and default ^T : int
@@ -307,6 +411,8 @@ module Nullable =
/// The input value.
///
/// The converted decimal.
+ ///
+ ///
[]
val inline decimal : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> decimal) and default ^T : int
@@ -316,5 +422,7 @@ module Nullable =
/// The input value.
///
/// The converted char.
+ ///
+ ///
[]
val inline char : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> char) and default ^T : int
diff --git a/src/fsharp/FSharp.Core/Query.fsi b/src/fsharp/FSharp.Core/Query.fsi
index 7017fe693e8..118cf4b0e9d 100644
--- a/src/fsharp/FSharp.Core/Query.fsi
+++ b/src/fsharp/FSharp.Core/Query.fsi
@@ -23,337 +23,399 @@ namespace Microsoft.FSharp.Linq
///
/// A method used to support the F# query syntax.
///
- new : seq<'T> -> QuerySource<'T,'Q>
+ new: seq<'T> -> QuerySource<'T,'Q>
///
/// A property used to support the F# query syntax.
///
- member Source : seq<'T>
+ member Source: seq<'T>
[]
/// The type used to support the F# query syntax. Use 'query { ... }' to use the query syntax. See
/// also F# Query Expressions in the F# Language Guide.
type QueryBuilder =
/// Create an instance of this builder. Use 'query { ... }' to use the query syntax.
- new : unit -> QueryBuilder
+ new: unit -> QueryBuilder
///
/// A method used to support the F# query syntax. Inputs to queries are implicitly wrapped by a call to one of the overloads of this method.
///
- member Source : source:IQueryable<'T> -> QuerySource<'T,'Q>
+ ///
+ ///
+ member Source: source:IQueryable<'T> -> QuerySource<'T,'Q>
///
/// A method used to support the F# query syntax. Inputs to queries are implicitly wrapped by a call to one of the overloads of this method.
///
- member Source : source:IEnumerable<'T> -> QuerySource<'T,IEnumerable>
+ ///
+ ///
+ member Source: source:IEnumerable<'T> -> QuerySource<'T,IEnumerable>
///
/// A method used to support the F# query syntax. Projects each element of a sequence to another sequence and combines the resulting sequences into one sequence.
///
- member For : source:QuerySource<'T,'Q> * body:('T -> QuerySource<'Result,'Q2>) -> QuerySource<'Result,'Q>
+ ///
+ ///
+ member For: source:QuerySource<'T,'Q> * body:('T -> QuerySource<'Result,'Q2>) -> QuerySource<'Result,'Q>
///
/// A method used to support the F# query syntax. Returns an empty sequence that has the specified type argument.
///
- member Zero : unit -> QuerySource<'T,'Q>
+ ///
+ ///
+ member Zero: unit -> QuerySource<'T,'Q>
///
/// A method used to support the F# query syntax. Returns a sequence of length one that contains the specified value.
///
- member Yield : value:'T -> QuerySource<'T,'Q>
+ ///
+ ///
+ member Yield: value:'T -> QuerySource<'T,'Q>
///
/// A method used to support the F# query syntax. Returns a sequence that contains the specified values.
///
- member YieldFrom : computation:QuerySource<'T,'Q> -> QuerySource<'T,'Q>
+ ///
+ ///
+ member YieldFrom: computation:QuerySource<'T,'Q> -> QuerySource<'T,'Q>
///
/// A method used to support the F# query syntax. Indicates that the query should be passed as a quotation to the Run method.
///
- member Quote : Quotations.Expr<'T> -> Quotations.Expr<'T>
+ ///
+ ///
+ member Quote: Quotations.Expr<'T> -> Quotations.Expr<'T>
///
/// A method used to support the F# query syntax. Runs the given quotation as a query using LINQ IQueryable rules.
///
- member Run : Quotations.Expr> -> IQueryable<'T>
- member internal RunQueryAsQueryable : Quotations.Expr> -> IQueryable<'T>
- member internal RunQueryAsEnumerable : Quotations.Expr> -> seq<'T>
- member internal RunQueryAsValue : Quotations.Expr<'T> -> 'T
+ ///
+ ///
+ member Run: Quotations.Expr> -> IQueryable<'T>
+ member internal RunQueryAsQueryable: Quotations.Expr> -> IQueryable<'T>
+ member internal RunQueryAsEnumerable: Quotations.Expr> -> seq<'T>
+ member internal RunQueryAsValue: Quotations.Expr<'T> -> 'T
/// A query operator that determines whether the selected elements contains a specified element.
///
+ ///
+ ///
[]
- member Contains : source:QuerySource<'T,'Q> * key:'T -> bool
+ member Contains: source:QuerySource<'T,'Q> * key:'T -> bool
/// A query operator that returns the number of selected elements.
///
+ ///
+ ///
[]
- member Count : source:QuerySource<'T,'Q> -> int
+ member Count: source:QuerySource<'T,'Q> -> int
/// A query operator that selects the last element of those selected so far.
///
+ ///
+ ///
[]
- member Last : source:QuerySource<'T,'Q> -> 'T
+ member Last: source:QuerySource<'T,'Q> -> 'T
/// A query operator that selects the last element of those selected so far, or a default value if no element is found.
///
+ ///
+ ///
[]
- member LastOrDefault : source:QuerySource<'T,'Q> -> 'T
+ member LastOrDefault: source:QuerySource<'T,'Q> -> 'T
/// A query operator that selects the single, specific element selected so far
///
+ ///
+ ///
[]
- member ExactlyOne : source:QuerySource<'T,'Q> -> 'T
+ member ExactlyOne: source:QuerySource<'T,'Q> -> 'T
/// A query operator that selects the single, specific element of those selected so far, or a default value if that element is not found.
///
+ ///
+ ///
[]
- member ExactlyOneOrDefault : source:QuerySource<'T,'Q> -> 'T
+ member ExactlyOneOrDefault: source:QuerySource<'T,'Q> -> 'T
/// A query operator that selects the first element of those selected so far, or a default value if the sequence contains no elements.
///
+ ///
+ ///
[]
- member HeadOrDefault : source:QuerySource<'T,'Q> -> 'T
+ member HeadOrDefault: source:QuerySource<'T,'Q> -> 'T
/// A query operator that projects each of the elements selected so far.
///
+ ///
+ ///
[]
- member Select : source:QuerySource<'T,'Q> * [] projection:('T -> 'Result) -> QuerySource<'Result,'Q>
+ member Select: source:QuerySource<'T,'Q> * [] projection:('T -> 'Result) -> QuerySource<'Result,'Q>
/// A query operator that selects those elements based on a specified predicate.
///
+ ///
+ ///
[]
- member Where : source:QuerySource<'T,'Q> * [] predicate:('T -> bool) -> QuerySource<'T,'Q>
+ member Where: source:QuerySource<'T,'Q> * [] predicate:('T -> bool) -> QuerySource<'T,'Q>
/// A query operator that selects a value for each element selected so far and returns the minimum resulting value.
///
+ ///
+ ///
[]
- member MinBy : source:QuerySource<'T,'Q> * [] valueSelector:('T -> 'Value) -> 'Value when 'Value : equality and 'Value : comparison
+ member MinBy: source:QuerySource<'T,'Q> * [] valueSelector:('T -> 'Value) -> 'Value when 'Value: equality and 'Value: comparison
/// A query operator that selects a value for each element selected so far and returns the maximum resulting value.
///
+ ///
+ ///
[]
- member MaxBy : source:QuerySource<'T,'Q> * [] valueSelector:('T -> 'Value) -> 'Value when 'Value : equality and 'Value : comparison
+ member MaxBy: source:QuerySource<'T,'Q> * [] valueSelector:('T -> 'Value) -> 'Value when 'Value: equality and 'Value: comparison
/// A query operator that groups the elements selected so far according to a specified key selector.
///
+ ///
+ ///
[]
- member GroupBy : source:QuerySource<'T,'Q> * [] keySelector:('T -> 'Key) -> QuerySource,'Q> when 'Key : equality
+ member GroupBy: source:QuerySource<'T,'Q> * [] keySelector:('T -> 'Key) -> QuerySource,'Q> when 'Key: equality
/// A query operator that sorts the elements selected so far in ascending order by the given sorting key.
///
+ ///
+ ///
[]
- member SortBy : source:QuerySource<'T,'Q> * [] keySelector:('T -> 'Key) -> QuerySource<'T,'Q> when 'Key : equality and 'Key : comparison
+ member SortBy: source:QuerySource<'T,'Q> * [] keySelector:('T -> 'Key) -> QuerySource<'T,'Q> when 'Key: equality and 'Key: comparison
/// A query operator that sorts the elements selected so far in descending order by the given sorting key.
///
+ ///
+ ///
[]
- member SortByDescending : source:QuerySource<'T,'Q> * [] keySelector:('T -> 'Key) -> QuerySource<'T,'Q> when 'Key : equality and 'Key : comparison
+ member SortByDescending: source:QuerySource<'T,'Q> * [] keySelector:('T -> 'Key) -> QuerySource<'T,'Q> when 'Key: equality and 'Key: comparison
/// A query operator that performs a subsequent ordering of the elements selected so far in ascending order by the given sorting key.
/// This operator may only be used immediately after a 'sortBy', 'sortByDescending', 'thenBy' or 'thenByDescending', or their nullable variants.
///
+ ///
+ ///
[]
- member ThenBy : source:QuerySource<'T,'Q> * [] keySelector:('T -> 'Key) -> QuerySource<'T,'Q> when 'Key : equality and 'Key : comparison
+ member ThenBy: source:QuerySource<'T,'Q> * [] keySelector:('T -> 'Key) -> QuerySource<'T,'Q> when 'Key: equality and 'Key: comparison
/// A query operator that performs a subsequent ordering of the elements selected so far in descending order by the given sorting key.
/// This operator may only be used immediately after a 'sortBy', 'sortByDescending', 'thenBy' or 'thenByDescending', or their nullable variants.
///
+ ///
+ ///
[]
- member ThenByDescending : source:QuerySource<'T,'Q> * [] keySelector:('T -> 'Key) -> QuerySource<'T,'Q> when 'Key : equality and 'Key : comparison
+ member ThenByDescending: source:QuerySource<'T,'Q> * [] keySelector:('T -> 'Key) -> QuerySource<'T,'Q> when 'Key: equality and 'Key: comparison
/// A query operator that selects a value for each element selected so far and groups the elements by the given key.
///
+ ///
+ ///
[]
- member GroupValBy<'T,'Key,'Value,'Q> : source:QuerySource<'T,'Q> * [] resultSelector:('T -> 'Value) * [] keySelector:('T -> 'Key) -> QuerySource,'Q> when 'Key : equality
+ member GroupValBy<'T,'Key,'Value,'Q> : source:QuerySource<'T,'Q> * [] resultSelector:('T -> 'Value) * [] keySelector:('T -> 'Key) -> QuerySource,'Q> when 'Key: equality
/// A query operator that correlates two sets of selected values based on matching keys.
/// Normal usage is 'join y in elements2 on (key1 = key2)'.
///
+ ///
+ ///
[]
- member Join : outerSource:QuerySource<'Outer,'Q> * innerSource:QuerySource<'Inner,'Q> * outerKeySelector:('Outer -> 'Key) * innerKeySelector:('Inner -> 'Key) * resultSelector:('Outer -> 'Inner -> 'Result) -> QuerySource<'Result,'Q>
+ member Join: outerSource:QuerySource<'Outer,'Q> * innerSource:QuerySource<'Inner,'Q> * outerKeySelector:('Outer -> 'Key) * innerKeySelector:('Inner -> 'Key) * resultSelector:('Outer -> 'Inner -> 'Result) -> QuerySource<'Result,'Q>
/// A query operator that correlates two sets of selected values based on matching keys and groups the results.
/// Normal usage is 'groupJoin y in elements2 on (key1 = key2) into group'.
///
+ ///
+ ///
[]
- member GroupJoin : outerSource:QuerySource<'Outer,'Q> * innerSource:QuerySource<'Inner,'Q> * outerKeySelector:('Outer -> 'Key) * innerKeySelector:('Inner -> 'Key) * resultSelector:('Outer -> seq<'Inner> -> 'Result) -> QuerySource<'Result,'Q>
+ member GroupJoin: outerSource:QuerySource<'Outer,'Q> * innerSource:QuerySource<'Inner,'Q> * outerKeySelector:('Outer -> 'Key) * innerKeySelector:('Inner -> 'Key) * resultSelector:('Outer -> seq<'Inner> -> 'Result) -> QuerySource<'Result,'Q>
/// A query operator that correlates two sets of selected values based on matching keys and groups the results.
/// If any group is empty, a group with a single default value is used instead.
/// Normal usage is 'leftOuterJoin y in elements2 on (key1 = key2) into group'.
///
+ ///
+ ///
[]
- member LeftOuterJoin : outerSource:QuerySource<'Outer,'Q> * innerSource:QuerySource<'Inner,'Q> * outerKeySelector:('Outer -> 'Key) * innerKeySelector:('Inner -> 'Key) * resultSelector:('Outer -> seq<'Inner> -> 'Result) -> QuerySource<'Result,'Q>
+ member LeftOuterJoin: outerSource:QuerySource<'Outer,'Q> * innerSource:QuerySource<'Inner,'Q> * outerKeySelector:('Outer -> 'Key) * innerKeySelector:('Inner -> 'Key) * resultSelector:('Outer -> seq<'Inner> -> 'Result) -> QuerySource<'Result,'Q>
#if SUPPORT_ZIP_IN_QUERIES
///
/// When used in queries, this operator corresponds to the LINQ Zip operator.
///
+ ///
+ ///
[]
- member Zip : firstSource:QuerySource<'T1> * secondSource:QuerySource<'T2> * resultSelector:('T1 -> 'T2 -> 'Result) -> QuerySource<'Result>
+ member Zip: firstSource:QuerySource<'T1> * secondSource:QuerySource<'T2> * resultSelector:('T1 -> 'T2 -> 'Result) -> QuerySource<'Result>
#endif
/// A query operator that selects a nullable value for each element selected so far and returns the sum of these values.
/// If any nullable does not have a value, it is ignored.
///
+ ///
+ ///
[]
- member inline SumByNullable : source:QuerySource<'T,'Q> * [] valueSelector:('T -> Nullable< ^Value >) -> Nullable< ^Value >
- when ^Value : (static member ( + ) : ^Value * ^Value -> ^Value)
- and ^Value : (static member Zero : ^Value)
- and default ^Value : int
+ member inline SumByNullable: source:QuerySource<'T,'Q> * [] valueSelector:('T -> Nullable< ^Value >) -> Nullable< ^Value >
+ when ^Value: (static member ( + ): ^Value * ^Value -> ^Value)
+ and ^Value: (static member Zero: ^Value)
+ and default ^Value: int
/// A query operator that selects a nullable value for each element selected so far and returns the minimum of these values.
/// If any nullable does not have a value, it is ignored.
///
+ ///
+ ///
[]
- member MinByNullable : source:QuerySource<'T,'Q> * [] valueSelector:('T -> Nullable<'Value>) -> Nullable<'Value>
- when 'Value : equality
- and 'Value : comparison
+ member MinByNullable: source:QuerySource<'T,'Q> * [] valueSelector:('T -> Nullable<'Value>) -> Nullable<'Value>
+ when 'Value: equality
+ and 'Value: comparison
/// A query operator that selects a nullable value for each element selected so far and returns the maximum of these values.
/// If any nullable does not have a value, it is ignored.
///
+ ///
+ ///
[]
- member MaxByNullable : source:QuerySource<'T,'Q> * [] valueSelector:('T -> Nullable<'Value>) -> Nullable<'Value> when 'Value : equality and 'Value : comparison
+ member MaxByNullable: source:QuerySource<'T,'Q> * [] valueSelector:('T -> Nullable<'Value>) -> Nullable<'Value> when 'Value: equality and 'Value: comparison
/// A query operator that selects a nullable value for each element selected so far and returns the average of these values.
/// If any nullable does not have a value, it is ignored.
///
+ ///
+ ///
[]
- member inline AverageByNullable : source:QuerySource<'T,'Q> * [] projection:('T -> Nullable< ^Value >) -> Nullable< ^Value >
- when ^Value : (static member ( + ) : ^Value * ^Value -> ^Value)
- and ^Value : (static member DivideByInt : ^Value * int -> ^Value)
- and ^Value : (static member Zero : ^Value)
- and default ^Value : float
+ member inline AverageByNullable: source:QuerySource<'T,'Q> * [] projection:('T -> Nullable< ^Value >) -> Nullable< ^Value >
+ when ^Value: (static member ( + ): ^Value * ^Value -> ^Value)
+ and ^Value: (static member DivideByInt: ^Value * int -> ^Value)
+ and ^Value: (static member Zero: ^Value)
+ and default ^Value: float
/// A query operator that selects a value for each element selected so far and returns the average of these values.
///
+ ///
+ ///
[]
- member inline AverageBy : source:QuerySource<'T,'Q> * [] projection:('T -> ^Value) -> ^Value
- when ^Value : (static member ( + ) : ^Value * ^Value -> ^Value)
- and ^Value : (static member DivideByInt : ^Value * int -> ^Value)
- and ^Value : (static member Zero : ^Value)
- and default ^Value : float
+ member inline AverageBy: source:QuerySource<'T,'Q> * [] projection:('T -> ^Value) -> ^Value
+ when ^Value: (static member ( + ): ^Value * ^Value -> ^Value)
+ and ^Value: (static member DivideByInt: ^Value * int -> ^Value)
+ and ^Value: (static member Zero: ^Value)
+ and default ^Value: float
/// A query operator that selects distinct elements from the elements selected so far.
///
+ ///
+ ///
[]
- member Distinct: source:QuerySource<'T,'Q> -> QuerySource<'T,'Q> when 'T : equality
+ member Distinct: source:QuerySource<'T,'Q> -> QuerySource<'T,'Q> when 'T: equality
/// A query operator that determines whether any element selected so far satisfies a condition.
///
+ ///
+ ///
[]
member Exists: source:QuerySource<'T,'Q> * [] predicate:('T -> bool) -> bool
/// A query operator that selects the first element selected so far that satisfies a specified condition.
///
+ ///
+ ///
[]
member Find: source:QuerySource<'T,'Q> * [] predicate:('T -> bool) -> 'T
/// A query operator that determines whether all elements selected so far satisfies a condition.
///
+ ///
+ ///
[]
member All: source:QuerySource<'T,'Q> * [] predicate:('T -> bool) -> bool
/// A query operator that selects the first element from those selected so far.
///
+ ///
+ ///
[]
member Head: source:QuerySource<'T,'Q> -> 'T
/// A query operator that selects the element at a specified index amongst those selected so far.
///
+ ///
+ ///
[]
member Nth: source:QuerySource<'T,'Q> * index:int -> 'T
/// A query operator that bypasses a specified number of the elements selected so far and selects the remaining elements.
///
+ ///
+ ///
[]
member Skip: source:QuerySource<'T,'Q> * count:int -> QuerySource<'T,'Q>
/// A query operator that bypasses elements in a sequence as long as a specified condition is true and then selects the remaining elements.
///
+ ///
+ ///
[]
member SkipWhile: source:QuerySource<'T,'Q> * [] predicate:('T -> bool) -> QuerySource<'T,'Q>
/// A query operator that selects a value for each element selected so far and returns the sum of these values.
///
+ ///
+ ///
[]
- member inline SumBy : source:QuerySource<'T,'Q> * [] projection:('T -> ^Value) -> ^Value
- when ^Value : (static member ( + ) : ^Value * ^Value -> ^Value)
- and ^Value : (static member Zero : ^Value)
- and default ^Value : int
+ member inline SumBy: source:QuerySource<'T,'Q> * [] projection:('T -> ^Value) -> ^Value
+ when ^Value: (static member ( + ): ^Value * ^Value -> ^Value)
+ and ^Value: (static member Zero: ^Value)
+ and default ^Value: int
/// A query operator that selects a specified number of contiguous elements from those selected so far.
///
+ ///
+ ///
[]
member Take: source:QuerySource<'T,'Q> * count:int-> QuerySource<'T,'Q>
/// A query operator that selects elements from a sequence as long as a specified condition is true, and then skips the remaining elements.
///
+ ///
+ ///
[]
member TakeWhile: source:QuerySource<'T,'Q> * [] predicate:('T -> bool) -> QuerySource<'T,'Q>
/// A query operator that sorts the elements selected so far in ascending order by the given nullable sorting key.
///
+ ///
+ ///
[]
- member SortByNullable : source:QuerySource<'T,'Q> * [] keySelector:('T -> Nullable<'Key>) -> QuerySource<'T,'Q> when 'Key : equality and 'Key : comparison
+ member SortByNullable: source:QuerySource<'T,'Q> * [] keySelector:('T -> Nullable<'Key>) -> QuerySource<'T,'Q> when 'Key: equality and 'Key: comparison
/// A query operator that sorts the elements selected so far in descending order by the given nullable sorting key.
///
+ ///
+ ///
[]
- member SortByNullableDescending : source:QuerySource<'T,'Q> * [] keySelector:('T -> Nullable<'Key>) -> QuerySource<'T,'Q> when 'Key : equality and 'Key : comparison
+ member SortByNullableDescending: source:QuerySource<'T,'Q> * [] keySelector:('T -> Nullable<'Key>) -> QuerySource<'T,'Q> when 'Key: equality and 'Key: comparison
/// A query operator that performs a subsequent ordering of the elements selected so far in ascending order by the given nullable sorting key.
/// This operator may only be used immediately after a 'sortBy', 'sortByDescending', 'thenBy' or 'thenByDescending', or their nullable variants.
///
+ ///
+ ///
[]
- member ThenByNullable : source:QuerySource<'T,'Q> * [] keySelector:('T -> Nullable<'Key>) -> QuerySource<'T,'Q> when 'Key : equality and 'Key : comparison
+ member ThenByNullable: source:QuerySource<'T,'Q> * [] keySelector:('T -> Nullable<'Key>) -> QuerySource<'T,'Q> when 'Key: equality and 'Key: comparison
/// A query operator that performs a subsequent ordering of the elements selected so far in descending order by the given nullable sorting key.
/// This operator may only be used immediately after a 'sortBy', 'sortByDescending', 'thenBy' or 'thenByDescending', or their nullable variants.
///
+ ///
+ ///
[]
- member ThenByNullableDescending : source:QuerySource<'T,'Q> * [] keySelector:('T -> Nullable<'Key>) -> QuerySource<'T,'Q> when 'Key : equality and 'Key : comparison
-
-
-#if __DEBUG
- []
- []
- type QueryQuoteBuilder =
- inherit QueryBuilder
- new : unit -> QueryQuoteBuilder
- member Run : Quotations.Expr<'T> -> Quotations.Expr<'T>
-
- []
- []
- type QueryLinqExprBuilder =
- inherit QueryBuilder
- new : unit -> QueryLinqExprBuilder
- member Run : Quotations.Expr<'T> -> System.Linq.Expressions.Expression
-
- []
- type QueryExprBuilder =
- inherit QueryBuilder
- new : unit -> QueryExprBuilder
- member Run : Quotations.Expr<'T> -> Quotations.Expr
-
- []
- type QueryExprPreTransBuilder =
- inherit QueryBuilder
- new : unit -> QueryExprPreTransBuilder
- member Run : Quotations.Expr<'T> -> Quotations.Expr
-
- []
- type QueryExprPreEliminateNestedBuilder =
- inherit QueryBuilder
- new : unit -> QueryExprPreEliminateNestedBuilder
- member Run : Quotations.Expr<'T> -> Quotations.Expr
-#endif
-
+ member ThenByNullableDescending: source:QuerySource<'T,'Q> * [] keySelector:('T -> Nullable<'Key>) -> QuerySource<'T,'Q> when 'Key: equality and 'Key: comparison
namespace Microsoft.FSharp.Linq.QueryRunExtensions
@@ -372,7 +434,7 @@ namespace Microsoft.FSharp.Linq.QueryRunExtensions
/// A method used to support the F# query syntax. Runs the given quotation as a query using LINQ rules.
///
[]
- member Run : Microsoft.FSharp.Quotations.Expr<'T> -> 'T
+ member Run: Microsoft.FSharp.Quotations.Expr<'T> -> 'T
///
/// A module used to support the F# query syntax.
@@ -383,10 +445,4 @@ namespace Microsoft.FSharp.Linq.QueryRunExtensions
/// A method used to support the F# query syntax. Runs the given quotation as a query using LINQ IEnumerable rules.
///
[]
- member Run : Microsoft.FSharp.Quotations.Expr> -> Microsoft.FSharp.Collections.seq<'T>
-
-
-
-
-
-
+ member Run: Microsoft.FSharp.Quotations.Expr> -> Microsoft.FSharp.Collections.seq<'T>
diff --git a/src/fsharp/FSharp.Core/QueryExtensions.fs b/src/fsharp/FSharp.Core/QueryExtensions.fs
index bfddf7e57ef..f21c93ba648 100644
--- a/src/fsharp/FSharp.Core/QueryExtensions.fs
+++ b/src/fsharp/FSharp.Core/QueryExtensions.fs
@@ -283,5 +283,3 @@ module internal Adapters =
tipf expr
let MakeSeqConv conv = match conv with NoConv -> NoConv | _ -> SeqConv conv
-
-
diff --git a/src/fsharp/FSharp.Core/array.fsi b/src/fsharp/FSharp.Core/array.fsi
index c5d9ed95895..0950c5e9a80 100644
--- a/src/fsharp/FSharp.Core/array.fsi
+++ b/src/fsharp/FSharp.Core/array.fsi
@@ -2,1603 +2,1957 @@
namespace Microsoft.FSharp.Collections
- open System
- open Microsoft.FSharp.Core
- open Microsoft.FSharp.Collections
- open System.Collections.Generic
-
- /// Contains operations for working with arrays.
+open System
+open Microsoft.FSharp.Core
+open Microsoft.FSharp.Collections
+open System.Collections.Generic
+
+/// Contains operations for working with arrays.
+///
+///
+/// See also F# Language Guide - Arrays.
+///
+[]
+[]
+module Array =
+
+ /// Returns a new array that contains all pairings of elements from the first and second arrays.
///
- ///
- /// See also F# Language Guide - Arrays.
- ///
- []
- []
- module Array =
-
- /// Returns a new array that contains all pairings of elements from the first and second arrays.
- ///
- /// The first input array.
- /// The second input array.
- ///
- /// Thrown when either of the input arrays is null.
- ///
- /// The resulting array of pairs.
- []
- val allPairs: array1:'T1[] -> array2:'T2[] -> ('T1 * 'T2)[]
-
- /// Builds a new array that contains the elements of the first array followed by the elements of the second array.
- ///
- /// The first input array.
- /// The second input array.
- ///
- /// The resulting array.
- ///
- /// Thrown when either of the input arrays is null.
- []
- val append: array1:'T[] -> array2:'T[] -> 'T[]
-
- /// Returns the average of the elements in the array.
- ///
- /// The input array.
- ///
- /// Thrown when array is empty.
- /// Thrown when the input array is null.
- ///
- /// The average of the elements in the array.
- []
- val inline average : array:^T[] -> ^T
- when ^T : (static member ( + ) : ^T * ^T -> ^T)
- and ^T : (static member DivideByInt : ^T*int -> ^T)
- and ^T : (static member Zero : ^T)
-
-
- /// Returns the average of the elements generated by applying the function to each element of the array.
- ///
- /// The function to transform the array elements before averaging.
- /// The input array.
- ///
- /// Thrown when array is empty.
- ///
- /// The computed average.
- ///
- /// Thrown when the input array is null.
- []
- val inline averageBy : projection:('T -> ^U) -> array:'T[] -> ^U
- when ^U : (static member ( + ) : ^U * ^U -> ^U)
- and ^U : (static member DivideByInt : ^U*int -> ^U)
- and ^U : (static member Zero : ^U)
-
- /// Reads a range of elements from the first array and write them into the second.
- ///
- /// The source array.
- /// The starting index of the source array.
- /// The target array.
- /// The starting index of the target array.
- /// The number of elements to copy.
- ///
- /// Thrown when either of the input arrays is null.
- /// Thrown when any of sourceIndex, targetIndex or count are negative,
- /// or when there aren't enough elements in source or target.
- []
- val inline blit: source:'T[] -> sourceIndex:int -> target:'T[] -> targetIndex:int -> count:int -> unit
-
- /// For each element of the array, applies the given function. Concatenates all the results and return the combined array.
- ///
- /// The function to create sub-arrays from the input array elements.
- /// The input array.
- ///
- /// The concatenation of the sub-arrays.
- ///
- /// Thrown when the input array is null.
- []
- val collect : mapping:('T -> 'U[]) -> array:'T[] -> 'U[]
-
- /// Compares two arrays using the given comparison function, element by element.
- ///
- /// A function that takes an element from each array and returns an int.
- /// If it evaluates to a non-zero value iteration is stopped and that value is returned.
- /// The first input array.
- /// The second input array.
- ///
- /// Returns the first non-zero result from the comparison function. If the first array has
- /// a larger element, the return value is always positive. If the second array has a larger
- /// element, the return value is always negative. When the elements are equal in the two
- /// arrays, 1 is returned if the first array is longer, 0 is returned if they are equal in
- /// length, and -1 is returned when the second array is longer.
- ///
- /// Thrown when either of the input arrays
- /// is null.
- []
- val inline compareWith: comparer:('T -> 'T -> int) -> array1:'T[] -> array2:'T[] -> int
-
- /// Builds a new array that contains the elements of each of the given sequence of arrays.
- ///
- /// The input sequence of arrays.
- ///
- /// The concatenation of the sequence of input arrays.
- ///
- /// Thrown when the input sequence is null.
- []
- val concat: arrays:seq<'T[]> -> 'T[]
-
- /// Tests if the array contains the specified element.
- ///
- /// The value to locate in the input array.
- /// The input array.
- ///
- /// True if the input array contains the specified element; false otherwise.
- ///
- /// Thrown when the input array is null.
- []
- val inline contains: value:'T -> array:'T[] -> bool when 'T : equality
-
- /// Builds a new array that contains the elements of the given array.
- ///
- /// The input array.
- ///
- /// A copy of the input array.
- ///
- /// Thrown when the input array is null.
- []
- val copy: array:'T[] -> 'T[]
-
- /// Applies a key-generating function to each element of an array and returns an array yielding unique
- /// keys and their number of occurrences in the original array.
- ///
- /// A function transforming each item of the input array into a key to be
- /// compared against the others.
- /// The input array.
- ///
- /// The result array.
- ///
- /// Thrown when the input array is null.
- []
- val countBy : projection:('T -> 'Key) -> array:'T[] -> ('Key * int)[] when 'Key : equality
-
- /// Creates an array whose elements are all initially the given value.
- ///
- /// The length of the array to create.
- /// The value for the elements.
- ///
- /// The created array.
- ///
- /// Thrown when count is negative.
- []
- val create: count:int -> value:'T -> 'T[]
-
- /// Returns the first element of the array, or
- /// None if the array is empty.
- ///
- /// The input array.
- ///
- /// Thrown when the input array is null.
- ///
- /// The first element of the array or None.
- []
- val tryHead: array:'T[] -> 'T option
-
- /// Applies the given function to successive elements, returning the first
- /// result where function returns Some(x) for some x. If the function
- /// never returns Some(x) then None is returned.
- ///
- /// The function to transform the array elements into options.
- /// The input array.
- ///
- /// The first transformed element that is Some(x).
- ///
- /// Thrown when the input array is null.
- []
- val tryPick: chooser:('T -> 'U option) -> array:'T[] -> 'U option
-
- /// Fills a range of elements of the array with the given value.
- ///
- /// The target array.
- /// The index of the first element to set.
- /// The number of elements to set.
- /// The value to set.
- ///
- /// Thrown when the input array is null.
- /// Thrown when either targetIndex or count is negative.
- []
- val fill: target:'T[] -> targetIndex:int -> count:int -> value:'T -> unit
-
- /// Applies the given function to successive elements, returning the first
- /// result where function returns Some(x) for some x. If the function
- /// never returns Some(x) then is raised.
- ///
- /// The function to generate options from the elements.
- /// The input array.
- ///
- /// Thrown when the input array is null.
- /// Thrown if every result from
- /// chooser is None.
- ///
- /// The first result.
- []
- val pick: chooser:('T -> 'U option) -> array:'T[] -> 'U
-
- /// Applies the given function to each element of the array. Returns
- /// the array comprised of the results "x" for each element where
- /// the function returns Some(x)
- ///
- /// The function to generate options from the elements.
- /// The input array.
- ///
- /// The array of results.
- ///
- /// Thrown when the input array is null.
- []
- val choose: chooser:('T -> 'U option) -> array:'T[] -> 'U[]
-
- /// Divides the input array into chunks of size at most chunkSize.
- ///
- /// The maximum size of each chunk.
- /// The input array.
- ///
- /// The array divided into chunks.
- ///
- /// Thrown when the input array is null.
- /// Thrown when chunkSize is not positive.
- []
- val chunkBySize: chunkSize:int -> array:'T[] -> 'T[][]
-
- /// Returns an array that contains no duplicate entries according to generic hash and
- /// equality comparisons on the entries.
- /// If an element occurs multiple times in the array then the later occurrences are discarded.
- ///
- /// The input array.
- ///
- /// The result array.
- ///
- /// Thrown when the input array is null.
- []
- val distinct: array:'T[] -> 'T[] when 'T : equality
-
- /// Returns an array that contains no duplicate entries according to the
- /// generic hash and equality comparisons on the keys returned by the given key-generating function.
- /// If an element occurs multiple times in the array then the later occurrences are discarded.
- ///
- /// A function transforming the array items into comparable keys.
- /// The input array.
- ///
- /// The result array.
- ///
- /// Thrown when the input array is null.
- []
- val distinctBy: projection:('T -> 'Key) -> array:'T[] -> 'T[] when 'Key : equality
-
- /// Splits the input array into at most count chunks.
- ///
- /// The maximum number of chunks.
- /// The input array.
- ///
- /// The array split into chunks.
- ///
- /// Thrown when the input array is null.
- /// Thrown when count is not positive.
- []
- val splitInto: count:int -> array:'T[] -> 'T[][]
-
- /// Returns an empty array of the given type.
- /// The empty array.
- []
- []
- val empty<'T> : 'T[]
-
- /// Returns the only element of the array.
- ///
- /// The input array.
- ///
- /// The only element of the array.
- ///
- /// Thrown when the input array is null.
- /// Thrown when the input does not have precisely one element.
- []
- val exactlyOne: array:'T[] -> 'T
-
- /// Returns the only element of the array or None if array is empty or contains more than one element.
- ///
- /// The input array.
- ///
- /// The only element of the array or None.
- ///
- /// Thrown when the input array is null.
- []
- val tryExactlyOne: array:'T[] -> 'T option
-
- /// Returns a new list with the distinct elements of the input array which do not appear in the itemsToExclude sequence,
- /// using generic hash and equality comparisons to compare values.
- ///
- /// A sequence whose elements that also occur in the input array will cause those elements to be
- /// removed from the result.
- /// An array whose elements that are not also in itemsToExclude will be returned.
- ///
- /// An array that contains the distinct elements of array that do not appear in itemsToExclude.
- ///
- /// Thrown when either itemsToExclude or array is null.
- []
- val except: itemsToExclude:seq<'T> -> array:'T[] -> 'T[] when 'T : equality
-
- /// Tests if any element of the array satisfies the given predicate.
- ///
- /// The predicate is applied to the elements of the input array. If any application
- /// returns true then the overall result is true and no further elements are tested.
- /// Otherwise, false is returned.
- ///
- /// The function to test the input elements.
- /// The input array.
- ///
- /// True if any result from predicate is true.
- ///
- /// Thrown when the input array is null.
- []
- val exists: predicate:('T -> bool) -> array:'T[] -> bool
-
- /// Tests if any pair of corresponding elements of the arrays satisfies the given predicate.
- ///
- /// The predicate is applied to matching elements in the two collections up to the lesser of the
- /// two lengths of the collections. If any application returns true then the overall result is
- /// true and no further elements are tested. Otherwise, if one collections is longer
- /// than the other then the ArgumentException exception is raised.
- /// Otherwise, false is returned.
- ///
- /// The function to test the input elements.
- /// The first input array.
- /// The second input array.
- ///
- /// True if any result from predicate is true.
- ///
- /// Thrown when either of the input arrays is null.
- /// Thrown when the input arrays differ in length.
- []
- val exists2: predicate:('T1 -> 'T2 -> bool) -> array1:'T1[] -> array2:'T2[] -> bool
+ /// The first input array.
+ /// The second input array.
+ ///
+ /// Thrown when either of the input arrays is null.
+ ///
+ /// The resulting array of pairs.
+ ///
+ ///
+ ///
+ []
+ val allPairs: array1:'T1[] -> array2:'T2[] -> ('T1 * 'T2)[]
+
+ /// Builds a new array that contains the elements of the first array followed by the elements of the second array.
+ ///
+ /// The first input array.
+ /// The second input array.
+ ///
+ /// The resulting array.
+ ///
+ /// Thrown when either of the input arrays is null.
+ ///
+ ///
+ ///
+ []
+ val append: array1:'T[] -> array2:'T[] -> 'T[]
+
+ /// Returns the average of the elements in the array.
+ ///
+ /// The input array.
+ ///
+ /// Thrown when array is empty.
+ /// Thrown when the input array is null.
+ ///
+ /// The average of the elements in the array.
+ ///
+ ///
+ ///
+ []
+ val inline average : array:^T[] -> ^T
+ when ^T : (static member ( + ) : ^T * ^T -> ^T)
+ and ^T : (static member DivideByInt : ^T*int -> ^T)
+ and ^T : (static member Zero : ^T)
+
+
+ /// Returns the average of the elements generated by applying the function to each element of the array.
+ ///
+ /// The function to transform the array elements before averaging.
+ /// The input array.
+ ///
+ /// Thrown when array is empty.
+ ///
+ /// The computed average.
+ ///
+ /// Thrown when the input array is null.
+ ///
+ ///
+ ///
+ []
+ val inline averageBy : projection:('T -> ^U) -> array:'T[] -> ^U
+ when ^U : (static member ( + ) : ^U * ^U -> ^U)
+ and ^U : (static member DivideByInt : ^U*int -> ^U)
+ and ^U : (static member Zero : ^U)
+
+ /// Reads a range of elements from the first array and write them into the second.
+ ///
+ /// The source array.
+ /// The starting index of the source array.
+ /// The target array.
+ /// The starting index of the target array.
+ /// The number of elements to copy.
+ ///
+ /// Thrown when either of the input arrays is null.
+ /// Thrown when any of sourceIndex, targetIndex or count are negative,
+ /// or when there aren't enough elements in source or target.
+ ///
+ ///
+ ///
+ []
+ val inline blit: source:'T[] -> sourceIndex:int -> target:'T[] -> targetIndex:int -> count:int -> unit
+
+ /// For each element of the array, applies the given function. Concatenates all the results and return the combined array.
+ ///
+ /// The function to create sub-arrays from the input array elements.
+ /// The input array.
+ ///
+ /// The concatenation of the sub-arrays.
+ ///
+ /// Thrown when the input array is null.
+ ///
+ ///
+ ///
+ []
+ val collect : mapping:('T -> 'U[]) -> array:'T[] -> 'U[]
+
+ /// Compares two arrays using the given comparison function, element by element.
+ ///
+ /// A function that takes an element from each array and returns an int.
+ /// If it evaluates to a non-zero value iteration is stopped and that value is returned.
+ /// The first input array.
+ /// The second input array.
+ ///
+ /// Returns the first non-zero result from the comparison function. If the first array has
+ /// a larger element, the return value is always positive. If the second array has a larger
+ /// element, the return value is always negative. When the elements are equal in the two
+ /// arrays, 1 is returned if the first array is longer, 0 is returned if they are equal in
+ /// length, and -1 is returned when the second array is longer.
+ ///
+ /// Thrown when either of the input arrays
+ /// is null.
+ ///
+ ///
+ ///
+ []
+ val inline compareWith: comparer:('T -> 'T -> int) -> array1:'T[] -> array2:'T[] -> int
+
+ /// Builds a new array that contains the elements of each of the given sequence of arrays.
+ ///
+ /// The input sequence of arrays.
+ ///
+ /// The concatenation of the sequence of input arrays.
+ ///
+ /// Thrown when the input sequence is null.
+ ///
+ ///
+ ///
+ []
+ val concat: arrays:seq<'T[]> -> 'T[]
+
+ /// Tests if the array contains the specified element.
+ ///
+ /// The value to locate in the input array.
+ /// The input array.
+ ///
+ /// True if the input array contains the specified element; false otherwise.
+ ///
+ /// Thrown when the input array is null.
+ ///
+ ///
+ ///
+ []
+ val inline contains: value:'T -> array:'T[] -> bool when 'T : equality
+
+ /// Builds a new array that contains the elements of the given array.
+ ///
+ /// The input array.
+ ///
+ /// A copy of the input array.
+ ///
+ /// Thrown when the input array is null.
+ ///
+ ///
+ ///
+ []
+ val copy: array:'T[] -> 'T[]
+
+ /// Applies a key-generating function to each element of an array and returns an array yielding unique
+ /// keys and their number of occurrences in the original array.
+ ///
+ /// A function transforming each item of the input array into a key to be
+ /// compared against the others.
+ /// The input array.
+ ///
+ /// The result array.
+ ///
+ /// Thrown when the input array is null.
+ ///
+ ///
+ ///
+ []
+ val countBy : projection:('T -> 'Key) -> array:'T[] -> ('Key * int)[] when 'Key : equality
+
+ /// Creates an array whose elements are all initially the given value.
+ ///
+ /// The length of the array to create.
+ /// The value for the elements.
+ ///
+ /// The created array.
+ ///
+ /// Thrown when count is negative.
+ ///
+ ///
+ ///
+ []
+ val create: count:int -> value:'T -> 'T[]
+
+ /// Returns the first element of the array, or
+ /// None if the array is empty.
+ ///
+ /// The input array.
+ ///
+ /// Thrown when the input array is null.
+ ///
+ /// The first element of the array or None.
+ ///
+ ///
+ ///
+ []
+ val tryHead: array:'T[] -> 'T option
+
+ /// Applies the given function to successive elements, returning the first
+ /// result where the function returns Some(x) for some x. If the function
+ /// never returns Some(x) then None is returned.
+ ///
+ /// The function to transform the array elements into options.
+ /// The input array.
+ ///
+ /// The first transformed element that is Some(x).
+ ///
+ /// Thrown when the input array is null.
+ ///
+ ///
+ ///
+ []
+ val tryPick: chooser:('T -> 'U option) -> array:'T[] -> 'U option
+
+ /// Fills a range of elements of the array with the given value.
+ ///
+ /// The target array.
+ /// The index of the first element to set.
+ /// The number of elements to set.
+ /// The value to set.
+ ///
+ /// Thrown when the input array is null.
+ /// Thrown when either targetIndex or count is negative.
+ ///
+ ///
+ ///
+ []
+ val fill: target:'T[] -> targetIndex:int -> count:int -> value:'T -> unit
+
+ /// Applies the given function to successive elements, returning the first
+ /// result where the function returns Some(x) for some x. If the function
+ /// never returns Some(x) then is raised.
+ ///
+ /// The function to generate options from the elements.
+ /// The input array.
+ ///
+ /// Thrown when the input array is null.
+ /// Thrown if every result from
+ /// chooser is None.
+ ///
+ /// The first result.
+ ///
+ ///
+ ///
+ []
+ val pick: chooser:('T -> 'U option) -> array:'T[] -> 'U
+
+ /// Applies the given function to each element of the array. Returns
+ /// the array comprised of the results x for each element where
+ /// the function returns Some(x)
+ ///
+ /// The function to generate options from the elements.
+ /// The input array.
+ ///
+ /// The array of results.
+ ///
+ /// Thrown when the input array is null.
+ ///
+ ///
+ ///
+ []
+ val choose: chooser:('T -> 'U option) -> array:'T[] -> 'U[]
+
+ /// Divides the input array into chunks of size at most chunkSize.
+ ///
+ /// The maximum size of each chunk.
+ /// The input array.
+ ///
+ /// The array divided into chunks.
+ ///
+ /// Thrown when the input array is null.
+ /// Thrown when chunkSize is not positive.
+ ///
+ ///
+ ///
+ []
+ val chunkBySize: chunkSize:int -> array:'T[] -> 'T[][]
+
+ /// Returns an array that contains no duplicate entries according to generic hash and
+ /// equality comparisons on the entries.
+ /// If an element occurs multiple times in the array then the later occurrences are discarded.
+ ///
+ /// The input array.
+ ///
+ /// The result array.
+ ///
+ /// Thrown when the input array is null.
+ ///
+ ///
+ ///
+ []
+ val distinct: array:'T[] -> 'T[] when 'T : equality
+
+ /// Returns an array that contains no duplicate entries according to the
+ /// generic hash and equality comparisons on the keys returned by the given key-generating function.
+ /// If an element occurs multiple times in the array then the later occurrences are discarded.
+ ///
+ /// A function transforming the array items into comparable keys.
+ /// The input array.
+ ///
+ /// The result array.
+ ///
+ /// Thrown when the input array is null.
+ ///
+ ///
+ ///
+ []
+ val distinctBy: projection:('T -> 'Key) -> array:'T[] -> 'T[] when 'Key : equality
+
+ /// Splits the input array into at most count chunks.
+ ///
+ /// The maximum number of chunks.
+ /// The input array.
+ ///
+ /// The array split into chunks.
+ ///
+ /// Thrown when the input array is null.
+ /// Thrown when count is not positive.
+ ///
+ ///
+ ///
+ []
+ val splitInto: count:int -> array:'T[] -> 'T[][]
+
+ /// Returns an empty array of the given type.
+ /// The empty array.
+ []
+ ///
+ ///
+ ///
+ []
+ val empty<'T> : 'T[]
+
+ /// Returns the only element of the array.
+ ///
+ /// The input array.
+ ///
+ /// The only element of the array.
+ ///
+ /// Thrown when the input array is null.
+ /// Thrown when the input does not have precisely one element.
+ ///
+ ///
+ ///
+ []
+ val exactlyOne: array:'T[] -> 'T
+
+ /// Returns the only element of the array or None if array is empty or contains more than one element.
+ ///
+ /// The input array.
+ ///
+ /// The only element of the array or None.
+ ///
+ /// Thrown when the input array is null.
+ ///
+ ///
+ ///
+ []
+ val tryExactlyOne: array:'T[] -> 'T option
+
+ /// Returns a new list with the distinct elements of the input array which do not appear in the itemsToExclude sequence,
+ /// using generic hash and equality comparisons to compare values.
+ ///
+ /// A sequence whose elements that also occur in the input array will cause those elements to be
+ /// removed from the result.
+ /// An array whose elements that are not also in itemsToExclude will be returned.
+ ///
+ /// An array that contains the distinct elements of array that do not appear in itemsToExclude.
+ ///
+ /// Thrown when either itemsToExclude or array is null.
+ ///
+ ///
+ ///
+ []
+ val except: itemsToExclude:seq<'T> -> array:'T[] -> 'T[] when 'T : equality
+
+ /// Tests if any element of the array satisfies the given predicate.
+ ///
+ /// The predicate is applied to the elements of the input array. If any application
+ /// returns true then the overall result is true and no further elements are tested.
+ /// Otherwise, false is returned.
+ ///
+ /// The function to test the input elements.
+ /// The input array.
+ ///
+ /// True if any result from predicate is true.
+ ///
+ /// Thrown when the input array is null.
+ ///
+ ///
+ ///
+ []
+ val exists: predicate:('T -> bool) -> array:'T[] -> bool
+
+ /// Tests if any pair of corresponding elements of the arrays satisfies the given predicate.
+ ///
+ /// The predicate is applied to matching elements in the two collections up to the lesser of the
+ /// two lengths of the collections. If any application returns true then the overall result is
+ /// true and no further elements are tested. Otherwise, if one collections is longer
+ /// than the other then the ArgumentException exception is raised.
+ /// Otherwise, false is returned.
+ ///
+ /// The function to test the input elements.
+ /// The first input array.
+ /// The second input array.
+ ///
+ /// True if any result from predicate is true.
+ ///
+ /// Thrown when either of the input arrays is null.
+ /// Thrown when the input arrays differ in length.
+ ///
+ ///
+ ///
+ []
+ val exists2: predicate:('T1 -> 'T2 -> bool) -> array1:'T1[] -> array2:'T2[] -> bool
+
+ /// Returns a new collection containing only the elements of the collection
+ /// for which the given predicate returns "true".
+ ///
+ /// The function to test the input elements.
+ /// The input array.
+ ///
+ /// An array containing the elements for which the given predicate returns true.
+ ///
+ /// Thrown when the input array is null.
+ ///
+ ///
+ ///
+ []
+ val filter: predicate:('T -> bool) -> array:'T[] -> 'T[]
+
+ /// Returns the first element for which the given function returns 'true'.
+ /// Raise if no such element exists.
+ ///
+ /// The function to test the input elements.
+ /// The input array.
+ ///
+ /// Thrown when the input array is null.
+ /// Thrown if predicate
+ /// never returns true.
+ ///
+ /// The first element for which predicate returns true.
+ ///
+ ///
+ ///
+ []
+ val find: predicate:('T -> bool) -> array:'T[] -> 'T
+
+ /// Returns the last element for which the given function returns 'true'.
+ /// Raise if no such element exists.
+ ///
+ /// The function to test the input elements.
+ /// The input array.
+ ///
+ /// Thrown if predicate
+ /// never returns true.
+ /// Thrown when the input array is null.
+ ///
+ /// The last element for which predicate returns true.
+ ///
+ ///
+ ///
+ []
+ val findBack: predicate:('T -> bool) -> array:'T[] -> 'T
+
+ /// Returns the index of the first element in the array
+ /// that satisfies the given predicate. Raise if
+ /// none of the elements satisfy the predicate.
+ ///
+ /// The function to test the input elements.
+ /// The input array.
+ ///
+ /// Thrown if predicate
+ /// never returns true.
+ /// Thrown when the input array is null.
+ ///
+ /// The index of the first element in the array that satisfies the given predicate.
+ ///
+ ///
+ ///
+ []
+ val findIndex: predicate:('T -> bool) -> array:'T[] -> int
+
+ /// Returns the index of the last element in the array
+ /// that satisfies the given predicate. Raise if
+ /// none of the elements satisfy the predicate.
+ ///
+ /// The function to test the input elements.
+ /// The input array.
+ ///
+ /// Thrown if predicate
+ /// never returns true.
+ /// Thrown when the input array is null.
+ ///
+ /// The index of the last element in the array that satisfies the given predicate.
+ ///
+ ///
+ ///
+ []
+ val findIndexBack: predicate:('T -> bool) -> array:'T[] -> int
+
+ /// Tests if all elements of the array satisfy the given predicate.
+ ///
+ /// The predicate is applied to the elements of the input collection. If any application
+ /// returns false then the overall result is false and no further elements are tested.
+ /// Otherwise, true is returned.
+ ///
+ /// The function to test the input elements.
+ /// The input array.
+ ///
+ /// True if all of the array elements satisfy the predicate.
+ ///
+ /// Thrown when the input array is null.
+ ///
+ ///
+ ///
+ []
+ val forall: predicate:('T -> bool) -> array:'T[] -> bool
- /// Returns a new collection containing only the elements of the collection
- /// for which the given predicate returns "true".
- ///
- /// The function to test the input elements.
- /// The input array.
- ///
- /// An array containing the elements for which the given predicate returns true.
- ///
- /// Thrown when the input array is null.
- []
- val filter: predicate:('T -> bool) -> array:'T[] -> 'T[]
- /// Returns the first element for which the given function returns 'true'.
- /// Raise if no such element exists.
- ///
- /// The function to test the input elements.
- /// The input array.
- ///
- /// Thrown when the input array is null.
- /// Thrown if predicate
- /// never returns true.
- ///
- /// The first element for which predicate returns true.
- []
- val find: predicate:('T -> bool) -> array:'T[] -> 'T
-
- /// Returns the last element for which the given function returns 'true'.
- /// Raise if no such element exists.
- ///
- /// The function to test the input elements.
- /// The input array.
- ///
- /// Thrown if predicate
- /// never returns true.
- /// Thrown when the input array is null.
- ///
- /// The last element for which predicate returns true.
- []
- val findBack: predicate:('T -> bool) -> array:'T[] -> 'T
-
- /// Returns the index of the first element in the array
- /// that satisfies the given predicate. Raise if
- /// none of the elements satisfy the predicate.
- ///
- /// The function to test the input elements.
- /// The input array.
- ///
- /// Thrown if predicate
- /// never returns true.
- /// Thrown when the input array is null.
- ///
- /// The index of the first element in the array that satisfies the given predicate.
- []
- val findIndex: predicate:('T -> bool) -> array:'T[] -> int
-
- /// Returns the index of the last element in the array
- /// that satisfies the given predicate. Raise if
- /// none of the elements satisfy the predicate.
- ///
- /// The function to test the input elements.
- /// The input array.
- ///
- /// Thrown if predicate
- /// never returns true.
- /// Thrown when the input array is null.
- ///
- /// The index of the last element in the array that satisfies the given predicate.
- []
- val findIndexBack: predicate:('T -> bool) -> array:'T[] -> int
-
- /// Tests if all elements of the array satisfy the given predicate.
- ///
- /// The predicate is applied to the elements of the input collection. If any application
- /// returns false then the overall result is false and no further elements are tested.
- /// Otherwise, true is returned.
- ///
- /// The function to test the input elements.
- /// The input array.
- ///
- /// True if all of the array elements satisfy the predicate.
- ///
- /// Thrown when the input array is null.
- []
- val forall: predicate:('T -> bool) -> array:'T[] -> bool
-
-
- /// Tests if all corresponding elements of the array satisfy the given predicate pairwise.
- ///
- /// The predicate is applied to matching elements in the two collections up to the lesser of the
- /// two lengths of the collections. If any application returns false then the overall result is
- /// false and no further elements are tested. Otherwise, if one collection is longer
- /// than the other then the ArgumentException exception is raised.
- /// Otherwise, true is returned.
- ///
- /// The function to test the input elements.
- /// The first input array.
- /// The second input array.
- ///
- /// Thrown when either of the input arrays is null.
- /// Thrown when the input arrays differ in length.
- ///
- /// True if all of the array elements satisfy the predicate.
- []
- val forall2: predicate:('T1 -> 'T2 -> bool) -> array1:'T1[] -> array2:'T2[] -> bool
-
- /// Applies a function to each element of the collection, threading an accumulator argument
- /// through the computation. If the input function is f and the elements are i0...iN then computes
- /// f (... (f s i0)...) iN
- ///
- /// The function to update the state given the input elements.
- /// The initial state.
- /// The input array.
- ///
- /// The final state.
- ///
- /// Thrown when the input array is null.
- []
- val fold<'T,'State> : folder:('State -> 'T -> 'State) -> state:'State -> array: 'T[] -> 'State
-
- /// Applies a function to each element of the array, starting from the end, threading an accumulator argument
- /// through the computation. If the input function is f and the elements are i0...iN then computes
- /// f i0 (...(f iN s))
- ///
- /// The function to update the state given the input elements.
- /// The input array.
- /// The initial state.
- ///
- /// The state object after the folding function is applied to each element of the array.
- ///
- /// Thrown when the input array is null.
- []
- val foldBack<'T,'State> : folder:('T -> 'State -> 'State) -> array:'T[] -> state:'State -> 'State
-
- /// Applies a function to pairs of elements drawn from the two collections,
- /// left-to-right, threading an accumulator argument
- /// through the computation. The two input
- /// arrays must have the same lengths, otherwise an ArgumentException is
- /// raised.
- ///
- /// The function to update the state given the input elements.
- /// The initial state.
- /// The first input array.
- /// The second input array.
- ///
- /// Thrown when either of the input arrays is null.
- /// Thrown when the input arrays differ in length.
- ///
- /// The final state.
- []
- val fold2<'T1,'T2,'State> : folder:('State -> 'T1 -> 'T2 -> 'State) -> state:'State -> array1:'T1[] -> array2:'T2[] -> 'State
-
- /// Apply a function to pairs of elements drawn from the two collections, right-to-left,
- /// threading an accumulator argument through the computation. The two input
- /// arrays must have the same lengths, otherwise an ArgumentException is
- /// raised.
- ///
- /// The function to update the state given the input elements.
- /// The first input array.
- /// The second input array.
- /// The initial state.
- ///
- /// Thrown when either of the input arrays is null.
- /// Thrown when the input arrays differ in length.
- ///
- /// The final state.
- []
- val foldBack2<'T1,'T2,'State> : folder:('T1 -> 'T2 -> 'State -> 'State) -> array1:'T1[] -> array2:'T2[] -> state:'State -> 'State
-
- /// Gets an element from an array.
- ///
- /// The input array.
- /// The input index.
- ///
- /// The value of the array at the given index.
- ///
- /// Thrown when the input array is null.
- /// Thrown when the index is negative or the input array does not contain enough elements.
- []
- val get: array:'T[] -> index:int -> 'T
-
- /// Returns the first element of the array.
- ///
- /// The input array.
- ///
- /// The first element of the array.
- ///
- /// Thrown when the input array is null.
- /// Thrown when the input array is empty.
- []
- val head: array:'T[] -> 'T
-
- /// Applies a key-generating function to each element of an array and yields an array of
- /// unique keys. Each unique key contains an array of all elements that match
- /// to this key.
- ///
- /// A function that transforms an element of the array into a comparable key.
- /// The input array.
- ///
- /// The result array.
- ///
- /// Thrown when the input array is null.
- []
- val groupBy : projection:('T -> 'Key) -> array:'T[] -> ('Key * 'T[])[] when 'Key : equality
-
- /// Builds a new array whose elements are the corresponding elements of the input array
- /// paired with the integer index (from 0) of each element.
- ///
- /// The input array.
- ///
- /// The array of indexed elements.
- ///
- /// Thrown when the input array is null.
- []
- val indexed: array:'T[] -> (int * 'T)[]
-
- /// Creates an array given the dimension and a generator function to compute the elements.
- ///
- /// The number of elements to initialize.
- /// The function to generate the initial values for each index.
- ///
- /// The created array.
- ///
- /// Thrown when count is negative.
- []
- val inline init: count:int -> initializer:(int -> 'T) -> 'T[]
-
- /// Creates an array where the entries are initially the default value Unchecked.defaultof<'T>.
- ///
- /// The length of the array to create.
- ///
- /// The created array.
- ///
- /// Thrown when count is negative.
- []
- val zeroCreate: count:int -> 'T[]
-
- /// Returns true if the given array is empty, otherwise false.
- ///
- /// The input array.
- ///
- /// True if the array is empty.
- ///
- /// Thrown when the input array is null.
- []
- val isEmpty: array:'T[] -> bool
-
- /// Applies the given function to each element of the array.
- ///
- /// The function to apply.
- /// The input array.
- ///
- /// Thrown when the input array is null.
- []
- val inline iter: action:('T -> unit) -> array:'T[] -> unit
-
- /// Applies the given function to pair of elements drawn from matching indices in two arrays. The
- /// two arrays must have the same lengths, otherwise an ArgumentException is
- /// raised.
- ///
- /// The function to apply.
- /// The first input array.
- /// The second input array.
- ///
- /// Thrown when either of the input arrays is null.
- /// Thrown when the input arrays differ in length.
- []
- val iter2: action:('T1 -> 'T2 -> unit) -> array1:'T1[] -> array2:'T2[] -> unit
-
- /// Applies the given function to each element of the array. The integer passed to the
- /// function indicates the index of element.
- ///
- /// The function to apply to each index and element.
- /// The input array.
- ///
- /// Thrown when the input array is null.
- []
- val iteri: action:(int -> 'T -> unit) -> array:'T[] -> unit
-
- /// Applies the given function to pair of elements drawn from matching indices in two arrays,
- /// also passing the index of the elements. The two arrays must have the same lengths,
- /// otherwise an ArgumentException is raised.
- ///
- /// The function to apply to each index and pair of elements.
- /// The first input array.
- /// The second input array.
- ///
- /// Thrown when either of the input arrays is null.
- /// Thrown when the input arrays differ in length.
- []
- val iteri2: action:(int -> 'T1 -> 'T2 -> unit) -> array1:'T1[] -> array2:'T2[] -> unit
-
- /// Returns the last element of the array.
- ///
- /// The input array.
- ///
- /// The last element of the array.
- ///
- /// Thrown when the input array is null.
- /// Thrown when the input does not have any elements.
- []
- val inline last: array:'T[] -> 'T
-
- /// Gets an element from an array.
- ///
- /// The input index.
- /// The input array.
- ///
- /// The value of the array at the given index.
- ///
- /// Thrown when the input array is null.
- /// Thrown when the index is negative or the input array does not contain enough elements.
- []
- val item: index:int -> array:'T[] -> 'T
-
- /// Returns the length of an array. You can also use property arr.Length.
- ///
- /// The input array.
- ///
- /// The length of the array.
- ///
- /// Thrown when the input array is null.
- []
- val length: array:'T[] -> int
-
- /// Returns the last element of the array.
- /// Return None if no such element exists.
- ///
- /// The input array.
- ///
- /// The last element of the array or None.
- ///
- /// Thrown when the input sequence is null.
- []
- val tryLast: array:'T[] -> 'T option
-
- /// Builds a new array whose elements are the results of applying the given function
- /// to each of the elements of the array.
- ///
- /// The function to transform elements of the array.
- /// The input array.
- ///
- /// The array of transformed elements.
- ///
- /// Thrown when the input array is null.
- []
- val inline map: mapping:('T -> 'U) -> array:'T[] -> 'U[]
-
- /// Builds a new collection whose elements are the results of applying the given function
- /// to the corresponding elements of the two collections pairwise. The two input
- /// arrays must have the same lengths, otherwise an ArgumentException is
- /// raised.
- ///
- /// The function to transform the pairs of the input elements.
- /// The first input array.
- /// The second input array.
- ///
- /// Thrown when the input arrays differ in length.
- /// Thrown when either of the input arrays is null.
- ///
- /// The array of transformed elements.
- []
- val map2: mapping:('T1 -> 'T2 -> 'U) -> array1:'T1[] -> array2:'T2[] -> 'U[]
-
- /// Combines map and fold. Builds a new array whose elements are the results of applying the given function
- /// to each of the elements of the input array. The function is also used to accumulate a final value.
- ///
- /// The function to transform elements from the input array and accumulate the final value.
- /// The initial state.
- /// The input array.
- ///
- /// Thrown when the input array is null.
- ///
- /// The array of transformed elements, and the final accumulated value.
- []
- val mapFold<'T,'State,'Result> : mapping:('State -> 'T -> 'Result * 'State) -> state:'State -> array:'T[] -> 'Result[] * 'State
-
- /// Combines map and foldBack. Builds a new array whose elements are the results of applying the given function
- /// to each of the elements of the input array. The function is also used to accumulate a final value.
- ///
- /// The function to transform elements from the input array and accumulate the final value.
- /// The input array.
- /// The initial state.
- ///
- /// Thrown when the input array is null.
- ///
- /// The array of transformed elements, and the final accumulated value.
- []
- val mapFoldBack<'T,'State,'Result> : mapping:('T -> 'State -> 'Result * 'State) -> array:'T[] -> state:'State -> 'Result[] * 'State
-
- /// Builds a new collection whose elements are the results of applying the given function
- /// to the corresponding triples from the three collections. The three input
- /// arrays must have the same length, otherwise an ArgumentException is
- /// raised.
- ///
- /// The function to transform the pairs of the input elements.
- /// The first input array.
- /// The second input array.
- /// The third input array.
- ///
- /// Thrown when the input arrays differ in length.
- /// Thrown when any of the input arrays is null.
- ///
- /// The array of transformed elements.
- []
- val map3: mapping:('T1 -> 'T2 -> 'T3 -> 'U) -> array1:'T1[] -> array2:'T2[] -> array3:'T3[] -> 'U[]
-
- /// Builds a new collection whose elements are the results of applying the given function
- /// to the corresponding elements of the two collections pairwise, also passing the index of
- /// the elements. The two input arrays must have the same lengths, otherwise an