diff --git a/FSharpBuild.Directory.Build.targets b/FSharpBuild.Directory.Build.targets
index 66b5508aa565..91acf15aa373 100644
--- a/FSharpBuild.Directory.Build.targets
+++ b/FSharpBuild.Directory.Build.targets
@@ -19,6 +19,7 @@
<_ReplacementText>$([System.IO.File]::ReadAllText('%(NoneSubstituteText.FullPath)'))
<_ReplacementText Condition="'%(NoneSubstituteText.Pattern1)' != ''">$(_ReplacementText.Replace('%(NoneSubstituteText.Pattern1)', '%(NoneSubstituteText.Replacement1)'))
<_ReplacementText Condition="'%(NoneSubstituteText.Pattern2)' != ''">$(_ReplacementText.Replace('%(NoneSubstituteText.Pattern2)', '%(NoneSubstituteText.Replacement2)'))
+ <_ReplacementText Condition="'%(NoneSubstituteText.Pattern3)' != ''">$(_ReplacementText.Replace('%(NoneSubstituteText.Pattern3)', '%(NoneSubstituteText.Replacement3)'))
<_CopyToOutputDirectory Condition="'%(NoneSubstituteText.CopyToOutputDirectory)' != ''">%(NoneSubstituteText.CopyToOutputDirectory)
<_CopyToOutputDirectory Condition="'%(NoneSubstituteText.CopyToOutputDirectory)' == ''">Never
diff --git a/fcs/FSharp.Compiler.Service/FSharp.Compiler.Service.fsproj b/fcs/FSharp.Compiler.Service/FSharp.Compiler.Service.fsproj
index 1877813d0672..ae8dba206749 100644
--- a/fcs/FSharp.Compiler.Service/FSharp.Compiler.Service.fsproj
+++ b/fcs/FSharp.Compiler.Service/FSharp.Compiler.Service.fsproj
@@ -10,7 +10,6 @@
$(DefineConstants);COMPILER$(DefineConstants);ENABLE_MONO_SUPPORT$(DefineConstants);NO_STRONG_NAMES
- $(DefineConstants);LOCALIZATION_FSCOMP$(TargetFramework)\$(TargetFramework)\$(OtherFlags) /warnon:1182
@@ -289,6 +288,7 @@
ReferenceResolution/SimulatedMSBuildReferenceResolver.fs
+
CompilerLocation/CompilerLocationUtils.fs
diff --git a/src/absil/ilnativeres.fs b/src/absil/ilnativeres.fs
index 53321b9eef3a..96cff415130c 100644
--- a/src/absil/ilnativeres.fs
+++ b/src/absil/ilnativeres.fs
@@ -279,8 +279,10 @@ type VersionHelper() =
///
/// Parses a version string of the form "major [ '.' minor [ '.' build [ '.' revision ] ] ]".
///
+ ///
/// The version string to parse.
/// If parsing succeeds, the parsed version. Otherwise a version that represents as much of the input as could be parsed successfully.
+ ///
/// True when parsing succeeds completely (i.e. every character in the string was consumed), false otherwise.
static member TryParse(s: string, [] version: byref) =
VersionHelper.TryParse (s, false, UInt16.MaxValue, true, ref version)
@@ -289,12 +291,14 @@ type VersionHelper() =
/// Parses a version string of the form "major [ '.' minor [ '.' ( '*' | ( build [ '.' ( '*' | revision ) ] ) ) ] ]"
/// as accepted by System.Reflection.AssemblyVersionAttribute.
///
+ ///
/// The version string to parse.
/// Indicates whether or not a wildcard is accepted as the terminal component.
///
/// If parsing succeeded, the parsed version. Otherwise a version instance with all parts set to zero.
/// If contains * the version build and/or revision numbers are set to .
///
+ ///
/// True when parsing succeeds completely (i.e. every character in the string was consumed), false otherwise.
static member TryParseAssemblyVersion (s: string, allowWildcard: bool, [] version: byref) =
@@ -306,6 +310,7 @@ type VersionHelper() =
/// Parses a version string of the form "major [ '.' minor [ '.' ( '*' | ( build [ '.' ( '*' | revision ) ] ) ) ] ]"
/// as accepted by System.Reflection.AssemblyVersionAttribute.
///
+ ///
/// The version string to parse.
/// Indicates whether or not we're parsing an assembly version string. If so, wildcards are accepted and each component must be less than 65535.
/// The maximum value that a version component may have.
@@ -314,6 +319,7 @@ type VersionHelper() =
/// If parsing succeeded, the parsed version. When is true a version with values up to the first invalid character set. Otherwise a version with all parts set to zero.
/// If contains * and wildcard is allowed the version build and/or revision numbers are set to .
///
+ ///
/// True when parsing succeeds completely (i.e. every character in the string was consumed), false otherwise.
static member private TryParse(s: string, allowWildcard: bool, maxValue: uint16, allowPartialParse: bool, [] version: byref) =
Debug.Assert (not allowWildcard || maxValue < UInt16.MaxValue)
diff --git a/src/fsharp/AttributeChecking.fs b/src/fsharp/AttributeChecking.fs
index 075f70669ace..f7554e44c39f 100644
--- a/src/fsharp/AttributeChecking.fs
+++ b/src/fsharp/AttributeChecking.fs
@@ -299,7 +299,11 @@ let CheckFSharpAttributes (g:TcGlobals) attribs m =
match namedArgs with
| ExtractAttribNamedArg "IsError" (AttribBoolArg v) -> v
| _ -> false
- if isError && (not g.compilingFslib || n <> 1204) then ErrorD msg else WarnD msg
+ // If we are using a compiler that supports nameof then error 3501 is always suppressed.
+ // See attribute on FSharp.Core 'nameof'
+ if n = 3501 then CompleteD
+ elif isError && (not g.compilingFslib || n <> 1204) then ErrorD msg
+ else WarnD msg
| _ ->
CompleteD
) ++ (fun () ->
diff --git a/src/fsharp/CompileOps.fs b/src/fsharp/CompileOps.fs
index 20980c282ec6..68a2be0f368c 100644
--- a/src/fsharp/CompileOps.fs
+++ b/src/fsharp/CompileOps.fs
@@ -2422,8 +2422,7 @@ type TcConfigBuilder =
deterministic = false
preferredUiLang = None
lcid = None
- // See bug 6071 for product banner spec
- productNameForBannerText = FSComp.SR.buildProductName(FSharpEnvironment.FSharpBannerVersion)
+ productNameForBannerText = FSharpEnvironment.FSharpProductName
showBanner = true
showTimes = false
showLoadedAssemblies = false
diff --git a/src/fsharp/FSComp.txt b/src/fsharp/FSComp.txt
index 5b7f36e43ec8..9c0ffef2857c 100644
--- a/src/fsharp/FSComp.txt
+++ b/src/fsharp/FSComp.txt
@@ -34,8 +34,6 @@ tupleRequiredInAbstractMethod,"\nA tuple type is required for one or more argume
203,buildInvalidWarningNumber,"Invalid warning number '%s'"
204,buildInvalidVersionString,"Invalid version string '%s'"
205,buildInvalidVersionFile,"Invalid version file '%s'"
-buildProductName,"Microsoft (R) F# Compiler version %s"
-buildProductNameCommunity,"F# Compiler for F# %s"
206,buildProblemWithFilename,"Problem with filename '%s': %s"
207,buildNoInputsSpecified,"No inputs specified"
209,buildPdbRequiresDebug,"The '--pdb' option requires the '--debug' option to be used"
@@ -1494,7 +1492,6 @@ notAFunctionButMaybeDeclaration,"This value is not a function and cannot be appl
3352,typrelInterfaceMemberNoMostSpecificImplementation,"Interface member '%s' does not have a most specific implementation."
3353,chkFeatureNotSupportedInLibrary,"Feature '%s' requires the F# library for language version %s or greater."
useSdkRefs,"Use reference assemblies for .NET framework references when available (Enabled by default)."
-fSharpBannerVersion,"%s for F# %s"
optsLangVersion,"Display the allowed values for language version, specify language version such as 'latest' or 'preview'"
optsSupportedLangVersions,"Supported language versions:"
nativeResourceFormatError,"Stream does not begin with a null resource and is not in '.RES' format."
@@ -1536,3 +1533,4 @@ forFormatInvalidForInterpolated4,"Interpolated strings used as type IFormattable
3380,parsEofInInterpolatedVerbatimString,"Incomplete interpolated verbatim string begun at or before here"
3381,parsEofInInterpolatedTripleQuoteString,"Incomplete interpolated triple-quote string begun at or before here"
3382,parsEmptyFillInInterpolatedString,"Invalid interpolated string. This interpolated string expression fill is empty, an expression was expected."
+3501 "This construct is not supported by your version of the F# compiler" CompilerMessage(ExperimentalAttributeMessages.NotSupportedYet, 3501, IsError=true)
diff --git a/src/fsharp/FSharp.Build/FSBuild.txt b/src/fsharp/FSharp.Build/FSBuild.txt
index 47d1ee7431d7..99209176b858 100644
--- a/src/fsharp/FSharp.Build/FSBuild.txt
+++ b/src/fsharp/FSharp.Build/FSBuild.txt
@@ -1,3 +1,2 @@
# FSharp.Build resource strings
toolpathUnknown,"ToolPath is unknown; specify the path to the tool."
-fSharpBannerVersion,"%s for F# %s"
diff --git a/src/fsharp/FSharp.Build/FSharp.Build.fsproj b/src/fsharp/FSharp.Build/FSharp.Build.fsproj
index 2960aec35148..77e910e4db8a 100644
--- a/src/fsharp/FSharp.Build/FSharp.Build.fsproj
+++ b/src/fsharp/FSharp.Build/FSharp.Build.fsproj
@@ -18,6 +18,7 @@
+
@@ -36,6 +37,8 @@
$(FSharpCoreShippedPackageVersion){{FSharpCorePreviewPackageVersion}}$(FSharpCorePreviewPackageVersion)
+ {{FSCorePackageVersion}}
+ $(FSCorePackageVersion)
diff --git a/src/fsharp/FSharp.Build/Microsoft.FSharp.NetSdk.props b/src/fsharp/FSharp.Build/Microsoft.FSharp.NetSdk.props
index f8bae0ab9ab5..3a51d7287a51 100644
--- a/src/fsharp/FSharp.Build/Microsoft.FSharp.NetSdk.props
+++ b/src/fsharp/FSharp.Build/Microsoft.FSharp.NetSdk.props
@@ -74,12 +74,32 @@ WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and
4.4.0
- {{FSharpCoreShippedPackageVersion}}
- {{FSharpCorePreviewPackageVersion}}$(DefaultValueTuplePackageVersion)
- $(DefaultFSharpCorePackageVersion)
+ {{FSharpCoreShippedPackageVersion}}
+ {{FSharpCorePreviewPackageVersion}}
+ {{FSCorePackageVersion}}
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
true
diff --git a/src/fsharp/FSharp.Build/Microsoft.FSharp.NetSdk.targets b/src/fsharp/FSharp.Build/Microsoft.FSharp.NetSdk.targets
index 330dc47f8b8f..7fa9d8993628 100644
--- a/src/fsharp/FSharp.Build/Microsoft.FSharp.NetSdk.targets
+++ b/src/fsharp/FSharp.Build/Microsoft.FSharp.NetSdk.targets
@@ -52,10 +52,8 @@ WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and
$(TargetsForTfmSpecificContentInPackage);PackageFSharpDesignTimeTools
-
-
- $(DefaultFSharpCorePreviewPackageVersion)
- $(RestoreSources); https://dotnet.myget.org/F/fsharp/api/v3/index.json
+
+ $(RestoreAdditionalProjectSources);https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json
diff --git a/src/fsharp/FSharp.Build/xlf/FSBuild.txt.cs.xlf b/src/fsharp/FSharp.Build/xlf/FSBuild.txt.cs.xlf
index e34a840079e4..374f1770bbb6 100644
--- a/src/fsharp/FSharp.Build/xlf/FSBuild.txt.cs.xlf
+++ b/src/fsharp/FSharp.Build/xlf/FSBuild.txt.cs.xlf
@@ -2,11 +2,6 @@
-
-
- {0} pro F# {1}
-
- Parametr ToolPath není známý. Zadejte cestu k nástroji.
diff --git a/src/fsharp/FSharp.Build/xlf/FSBuild.txt.de.xlf b/src/fsharp/FSharp.Build/xlf/FSBuild.txt.de.xlf
index 8014aa45590e..c5a6cb42c9f6 100644
--- a/src/fsharp/FSharp.Build/xlf/FSBuild.txt.de.xlf
+++ b/src/fsharp/FSharp.Build/xlf/FSBuild.txt.de.xlf
@@ -2,11 +2,6 @@
-
-
- {0} für F# {1}
-
- ToolPath unbekannt. Geben Sie den Pfad zum Tool an.
diff --git a/src/fsharp/FSharp.Build/xlf/FSBuild.txt.es.xlf b/src/fsharp/FSharp.Build/xlf/FSBuild.txt.es.xlf
index e70e526aa755..4791cd16b2c9 100644
--- a/src/fsharp/FSharp.Build/xlf/FSBuild.txt.es.xlf
+++ b/src/fsharp/FSharp.Build/xlf/FSBuild.txt.es.xlf
@@ -2,11 +2,6 @@
-
-
- {0} para F# {1}
-
- ToolPath se desconoce; especifique la ruta de acceso a la herramienta.
diff --git a/src/fsharp/FSharp.Build/xlf/FSBuild.txt.fr.xlf b/src/fsharp/FSharp.Build/xlf/FSBuild.txt.fr.xlf
index 967ceecc6e47..79ddfd7ab241 100644
--- a/src/fsharp/FSharp.Build/xlf/FSBuild.txt.fr.xlf
+++ b/src/fsharp/FSharp.Build/xlf/FSBuild.txt.fr.xlf
@@ -2,11 +2,6 @@
-
-
- {0} pour F# {1}
-
- ToolPath est inconnu, spécifiez le chemin de l'outil.
diff --git a/src/fsharp/FSharp.Build/xlf/FSBuild.txt.it.xlf b/src/fsharp/FSharp.Build/xlf/FSBuild.txt.it.xlf
index a0c02bd7658f..a7dd116bb445 100644
--- a/src/fsharp/FSharp.Build/xlf/FSBuild.txt.it.xlf
+++ b/src/fsharp/FSharp.Build/xlf/FSBuild.txt.it.xlf
@@ -2,11 +2,6 @@
-
-
- {0} per F# {1}
-
- Il valore di ToolPath è sconosciuto. Specificare il percorso dello strumento.
diff --git a/src/fsharp/FSharp.Build/xlf/FSBuild.txt.ja.xlf b/src/fsharp/FSharp.Build/xlf/FSBuild.txt.ja.xlf
index 558d9a4705d6..e26503cb96f1 100644
--- a/src/fsharp/FSharp.Build/xlf/FSBuild.txt.ja.xlf
+++ b/src/fsharp/FSharp.Build/xlf/FSBuild.txt.ja.xlf
@@ -2,11 +2,6 @@
-
-
- F# {1} のための {0}
-
- ToolPath が不明です。ツールンパスを指定します。
diff --git a/src/fsharp/FSharp.Build/xlf/FSBuild.txt.ko.xlf b/src/fsharp/FSharp.Build/xlf/FSBuild.txt.ko.xlf
index d007db16c3c2..4c141658672b 100644
--- a/src/fsharp/FSharp.Build/xlf/FSBuild.txt.ko.xlf
+++ b/src/fsharp/FSharp.Build/xlf/FSBuild.txt.ko.xlf
@@ -2,11 +2,6 @@
-
-
- F# {1}용 {0}
-
- ToolPath를 알 수 없습니다. 도구 경로를 지정하세요.
diff --git a/src/fsharp/FSharp.Build/xlf/FSBuild.txt.pl.xlf b/src/fsharp/FSharp.Build/xlf/FSBuild.txt.pl.xlf
index 565fdd2b8d21..b7734b58a758 100644
--- a/src/fsharp/FSharp.Build/xlf/FSBuild.txt.pl.xlf
+++ b/src/fsharp/FSharp.Build/xlf/FSBuild.txt.pl.xlf
@@ -2,11 +2,6 @@
-
-
- {0} dla języka F# {1}
-
- Właściwość ToolPath jest nieznana. Określ ścieżkę do narzędzia.
diff --git a/src/fsharp/FSharp.Build/xlf/FSBuild.txt.pt-BR.xlf b/src/fsharp/FSharp.Build/xlf/FSBuild.txt.pt-BR.xlf
index 2d6ac4cf6ca5..865c593fd078 100644
--- a/src/fsharp/FSharp.Build/xlf/FSBuild.txt.pt-BR.xlf
+++ b/src/fsharp/FSharp.Build/xlf/FSBuild.txt.pt-BR.xlf
@@ -2,11 +2,6 @@
-
-
- {0} para F# {1}
-
- ToolPath desconhecido. Especifique o caminho para a ferramenta.
diff --git a/src/fsharp/FSharp.Build/xlf/FSBuild.txt.ru.xlf b/src/fsharp/FSharp.Build/xlf/FSBuild.txt.ru.xlf
index 23dc6215bd4c..b1fef639ee03 100644
--- a/src/fsharp/FSharp.Build/xlf/FSBuild.txt.ru.xlf
+++ b/src/fsharp/FSharp.Build/xlf/FSBuild.txt.ru.xlf
@@ -2,11 +2,6 @@
-
-
- {0} для F# {1}
-
- Путь к инструменту (ToolPath) неизвестен, укажите путь к инструменту.
diff --git a/src/fsharp/FSharp.Build/xlf/FSBuild.txt.tr.xlf b/src/fsharp/FSharp.Build/xlf/FSBuild.txt.tr.xlf
index b56fc715900b..4dd43b355311 100644
--- a/src/fsharp/FSharp.Build/xlf/FSBuild.txt.tr.xlf
+++ b/src/fsharp/FSharp.Build/xlf/FSBuild.txt.tr.xlf
@@ -2,11 +2,6 @@
-
-
- F# {1} için {0}
-
- ToolPath bilinmiyor; aracın yolunu belirtin.
diff --git a/src/fsharp/FSharp.Build/xlf/FSBuild.txt.zh-Hans.xlf b/src/fsharp/FSharp.Build/xlf/FSBuild.txt.zh-Hans.xlf
index f514600395d9..bf5016a3685d 100644
--- a/src/fsharp/FSharp.Build/xlf/FSBuild.txt.zh-Hans.xlf
+++ b/src/fsharp/FSharp.Build/xlf/FSBuild.txt.zh-Hans.xlf
@@ -2,11 +2,6 @@
-
-
- F# {1} 的 {0}
-
- ToolPath 未知;请指定工具的路径。
diff --git a/src/fsharp/FSharp.Build/xlf/FSBuild.txt.zh-Hant.xlf b/src/fsharp/FSharp.Build/xlf/FSBuild.txt.zh-Hant.xlf
index e3f63746fa46..0e30a5cfeca7 100644
--- a/src/fsharp/FSharp.Build/xlf/FSBuild.txt.zh-Hant.xlf
+++ b/src/fsharp/FSharp.Build/xlf/FSBuild.txt.zh-Hant.xlf
@@ -2,11 +2,6 @@
-
-
- F # {1} 的 {0}
-
- ToolPath 未知; 請指定工具的路徑。
diff --git a/src/fsharp/FSharp.Compiler.Private.Scripting/FSharp.Compiler.Private.Scripting.fsproj b/src/fsharp/FSharp.Compiler.Private.Scripting/FSharp.Compiler.Private.Scripting.fsproj
index 58472c59e378..3adf2846f799 100644
--- a/src/fsharp/FSharp.Compiler.Private.Scripting/FSharp.Compiler.Private.Scripting.fsproj
+++ b/src/fsharp/FSharp.Compiler.Private.Scripting/FSharp.Compiler.Private.Scripting.fsproj
@@ -13,7 +13,8 @@
-
+
+
diff --git a/src/fsharp/FSharp.Compiler.Private.Scripting/FSharp.Compiler.Private.Scripting.nuspec b/src/fsharp/FSharp.Compiler.Private.Scripting/FSharp.Compiler.Private.Scripting.nuspec
index 0e52e1b4300c..004852622646 100644
--- a/src/fsharp/FSharp.Compiler.Private.Scripting/FSharp.Compiler.Private.Scripting.nuspec
+++ b/src/fsharp/FSharp.Compiler.Private.Scripting/FSharp.Compiler.Private.Scripting.nuspec
@@ -5,13 +5,12 @@
en-US
+
$CommonFileElements$
-
-
diff --git a/src/fsharp/FSharp.Compiler.Private/FSharp.Compiler.Private.fsproj b/src/fsharp/FSharp.Compiler.Private/FSharp.Compiler.Private.fsproj
index c527a50d4afe..270bc1a66370 100644
--- a/src/fsharp/FSharp.Compiler.Private/FSharp.Compiler.Private.fsproj
+++ b/src/fsharp/FSharp.Compiler.Private/FSharp.Compiler.Private.fsproj
@@ -283,6 +283,7 @@
ReferenceResolution/SimulatedMSBuildReferenceResolver.fs
+
CompilerLocation\CompilerLocationUtils.fs
diff --git a/src/fsharp/FSharp.Core/Nullable.fsi b/src/fsharp/FSharp.Core/Nullable.fsi
index 777aecdc7ab1..0b18896ef8cc 100644
--- a/src/fsharp/FSharp.Core/Nullable.fsi
+++ b/src/fsharp/FSharp.Core/Nullable.fsi
@@ -117,6 +117,7 @@ module Nullable =
/// 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
@@ -124,7 +125,9 @@ 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 uint8 : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> uint8) and default ^T : int
@@ -132,7 +135,9 @@ module Nullable =
/// Converts the argument to signed 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 sbyte
[]
val inline sbyte : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> sbyte) and default ^T : int
@@ -140,7 +145,9 @@ module Nullable =
/// Converts the argument to signed 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 sbyte
[]
val inline int8 : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> int8) and default ^T : int
@@ -148,7 +155,9 @@ module Nullable =
/// Converts the argument to signed 16-bit integer. 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 int16
[]
val inline int16 : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> int16) and default ^T : int
@@ -156,7 +165,9 @@ module Nullable =
/// Converts the argument to unsigned 16-bit integer. 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 uint16
[]
val inline uint16 : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> uint16) and default ^T : int
@@ -164,7 +175,9 @@ module Nullable =
/// Converts the argument to signed 32-bit integer. 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 int
[]
val inline int : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> int) and default ^T : int
@@ -172,13 +185,17 @@ module Nullable =
/// Converts the argument to an unsigned 32-bit integer. 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 unsigned integer
[]
val inline uint: value: Nullable< ^T > -> Nullable when ^T :(static member op_Explicit: ^T -> uint) and default ^T : uint
/// Converts the argument to a particular enum type.
+ ///
/// The input value.
+ ///
/// The converted enum type.
[]
val inline enum : value:Nullable< int32 > -> Nullable< ^U > when ^U : enum
@@ -186,7 +203,9 @@ module Nullable =
/// Converts the argument to signed 32-bit integer. 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 int32
[]
val inline int32 : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> int32) and default ^T : int
@@ -194,7 +213,9 @@ module Nullable =
/// Converts the argument to unsigned 32-bit integer. 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 uint32
[]
val inline uint32 : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> uint32) and default ^T : int
@@ -202,7 +223,9 @@ module Nullable =
/// Converts the argument to signed 64-bit integer. 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 int64
[]
val inline int64 : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> int64) and default ^T : int
@@ -210,7 +233,9 @@ module Nullable =
/// Converts the argument to unsigned 64-bit integer. 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 uint64
[]
val inline uint64 : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> uint64) and default ^T : int
@@ -218,7 +243,9 @@ module Nullable =
/// Converts the argument to 32-bit float. 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 float32
[]
val inline float32 : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> float32) and default ^T : int
@@ -226,7 +253,9 @@ module Nullable =
/// Converts the argument to 64-bit float. 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 float
[]
val inline float : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> float) and default ^T : int
@@ -234,7 +263,9 @@ module Nullable =
/// Converts the argument to 32-bit float. 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 float32
[]
val inline single : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> single) and default ^T : int
@@ -242,7 +273,9 @@ module Nullable =
/// Converts the argument to 64-bit float. 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 float
[]
val inline double : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> double) and default ^T : int
@@ -250,7 +283,9 @@ module Nullable =
/// Converts the argument to signed native integer. This is a direct conversion for all
/// primitive numeric types. Otherwise the operation requires an appropriate
/// static conversion method on the input type.
+ ///
/// 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
@@ -258,7 +293,9 @@ module Nullable =
/// Converts the argument to unsigned native integer using a direct conversion for all
/// primitive numeric types. Otherwise the operation requires an appropriate
/// static conversion method on the input type.
+ ///
/// 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
@@ -266,14 +303,18 @@ module Nullable =
/// Converts the argument to System.Decimal using 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 decimal.
[]
val inline decimal : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> decimal) and default ^T : int
/// Converts the argument to character. Numeric inputs are converted according to the UTF-16
/// encoding for characters. The operation requires an appropriate static conversion method on the input type.
+ ///
/// 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/array.fsi b/src/fsharp/FSharp.Core/array.fsi
index 5ede87a3c6d9..aded2dcf256f 100644
--- a/src/fsharp/FSharp.Core/array.fsi
+++ b/src/fsharp/FSharp.Core/array.fsi
@@ -8,31 +8,44 @@ namespace Microsoft.FSharp.Collections
open System.Collections.Generic
/// Basic operations on 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.
+ ///
+ /// 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.
+ ///
+ /// 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 array is empty.
+ /// Thrown when the input array is null.
+ ///
/// The average of the elements in the array.
- /// Thrown when the input array is null.
[]
val inline average : array:^T[] -> ^T
when ^T : (static member ( + ) : ^T * ^T -> ^T)
@@ -41,11 +54,15 @@ namespace Microsoft.FSharp.Collections
/// 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.
+ ///
+ /// Thrown when array is empty.
+ ///
/// The computed average.
- /// Thrown when the input array is null.
+ ///
+ /// Thrown when the input array is null.
[]
val inline averageBy : projection:('T -> ^U) -> array:'T[] -> ^U
when ^U : (static member ( + ) : ^U * ^U -> ^U)
@@ -53,22 +70,27 @@ namespace Microsoft.FSharp.Collections
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,
+ ///
+ /// 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.
+ ///
+ /// Thrown when the input array is null.
[]
val collect : mapping:('T -> 'U[]) -> array:'T[] -> 'U[]
@@ -85,30 +107,39 @@ namespace Microsoft.FSharp.Collections
/// 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
+ /// 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.
+ ///
+ /// 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.
+ ///
+ /// 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.
+ ///
+ /// Thrown when the input array is null.
[]
val copy: array:'T[] -> 'T[]
@@ -121,22 +152,28 @@ namespace Microsoft.FSharp.Collections
///
/// The result array.
///
- /// Thrown when the input array is null.
+ /// 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.
+ ///
+ /// 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.
+ ///
+ /// Thrown when the input array is null.
+ ///
/// The first element of the array or None.
[]
val tryHead: array:'T[] -> 'T option
@@ -144,31 +181,39 @@ namespace Microsoft.FSharp.Collections
/// 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.
+ ///
+ /// 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.
+ ///
+ /// 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 KeyNotFoundException is raised.
+ /// 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
+ ///
+ /// 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
@@ -176,19 +221,25 @@ namespace Microsoft.FSharp.Collections
/// 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.
+ ///
+ /// 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.
+ ///
+ /// Thrown when the input array is null.
+ /// Thrown when chunkSize is not positive.
[]
val chunkBySize: chunkSize:int -> array:'T[] -> 'T[][]
@@ -200,7 +251,7 @@ namespace Microsoft.FSharp.Collections
///
/// The result array.
///
- /// Thrown when the input array is null.
+ /// Thrown when the input array is null.
[]
val distinct: array:'T[] -> 'T[] when 'T : equality
@@ -213,16 +264,19 @@ namespace Microsoft.FSharp.Collections
///
/// The result array.
///
- /// Thrown when the input array is null.
+ /// 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.
+ ///
+ /// Thrown when the input array is null.
+ /// Thrown when count is not positive.
[]
val splitInto: count:int -> array:'T[] -> 'T[][]
@@ -238,8 +292,8 @@ namespace Microsoft.FSharp.Collections
///
/// The only element of the array.
///
- /// Thrown when the input array is null.
- /// Thrown when the input does not have precisely one element.
+ /// Thrown when the input array is null.
+ /// Thrown when the input does not have precisely one element.
[]
val exactlyOne: array:'T[] -> 'T
@@ -249,7 +303,7 @@ namespace Microsoft.FSharp.Collections
///
/// The only element of the array or None.
///
- /// Thrown when the input array is null.
+ /// Thrown when the input array is null.
[]
val tryExactlyOne: array:'T[] -> 'T option
@@ -262,7 +316,7 @@ namespace Microsoft.FSharp.Collections
///
/// An array that contains the distinct elements of array that do not appear in itemsToExclude.
///
- /// Thrown when either itemsToExclude or array is null.
+ /// Thrown when either itemsToExclude or array is null.
[]
val except: itemsToExclude:seq<'T> -> array:'T[] -> 'T[] when 'T : equality
@@ -271,10 +325,13 @@ namespace Microsoft.FSharp.Collections
/// 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.
+ ///
+ /// Thrown when the input array is null.
[]
val exists: predicate:('T -> bool) -> array:'T[] -> bool
@@ -285,66 +342,84 @@ namespace Microsoft.FSharp.Collections
/// 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.
+ ///
+ /// 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.
+ ///
+ /// 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 KeyNotFoundException if no such element exists.
+ /// 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
+ ///
+ /// 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 KeyNotFoundException if no such element exists.
+ /// Raise if no such element exists.
+ ///
/// The function to test the input elements.
/// The input array.
- /// Thrown if predicate
+ ///
+ /// Thrown if predicate
/// never returns true.
- /// Thrown when the input array is null.
+ /// 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 KeyNotFoundException if
+ /// 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
+ ///
+ /// Thrown if predicate
/// never returns true.
- /// Thrown when the input array is null.
+ /// 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 KeyNotFoundException if
+ /// 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
+ ///
+ /// Thrown if predicate
/// never returns true.
- /// Thrown when the input array is null.
+ /// 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
@@ -354,10 +429,13 @@ namespace Microsoft.FSharp.Collections
/// 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.
+ ///
+ /// Thrown when the input array is null.
[]
val forall: predicate:('T -> bool) -> array:'T[] -> bool
@@ -369,11 +447,14 @@ namespace Microsoft.FSharp.Collections
/// 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.
+ ///
+ /// 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
@@ -381,22 +462,28 @@ namespace Microsoft.FSharp.Collections
/// 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.
+ ///
+ /// 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.
+ ///
+ /// Thrown when the input array is null.
[]
val foldBack<'T,'State> : folder:('T -> 'State -> 'State) -> array:'T[] -> state:'State -> 'State
@@ -405,12 +492,15 @@ namespace Microsoft.FSharp.Collections
/// 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.
+ ///
+ /// 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
@@ -419,22 +509,28 @@ namespace Microsoft.FSharp.Collections
/// 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.
+ ///
+ /// 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.
+ ///
+ /// 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
@@ -444,8 +540,8 @@ namespace Microsoft.FSharp.Collections
///
/// The first element of the array.
///
- /// Thrown when the input array is null.
- /// Thrown when the input array is empty.
+ /// Thrown when the input array is null.
+ /// Thrown when the input array is empty.
[]
val head: array:'T[] -> 'T
@@ -458,115 +554,150 @@ namespace Microsoft.FSharp.Collections
///
/// The result array.
///
- /// Thrown when the input array is null.
+ /// 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.
+ ///
+ /// 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.
+ ///
+ /// 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.
+ ///
+ /// 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.
+ ///
+ /// 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.
+ ///
+ /// 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.
+ ///
+ /// 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.
+ ///
+ /// 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.
+ ///
+ /// 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.
+ ///
+ /// 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.
+ ///
+ /// 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.
+ ///
+ /// 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.
+ ///
+ /// 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.
+ ///
+ /// Thrown when the input array is null.
[]
val inline map: mapping:('T -> 'U) -> array:'T[] -> 'U[]
@@ -574,31 +705,40 @@ namespace Microsoft.FSharp.Collections
/// 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.
+ ///
+ /// 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.
+ ///
+ /// 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.
+ ///
+ /// 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
@@ -607,12 +747,15 @@ namespace Microsoft.FSharp.Collections
/// 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.
+ ///
+ /// 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[]
@@ -621,11 +764,14 @@ namespace Microsoft.FSharp.Collections
/// 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 ArgumentException is
/// raised.
+ ///
/// The function to transform pairs of input elements and their indices.
/// 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.
+ ///
+ /// Thrown when either of the input arrays is null.
+ /// Thrown when the input arrays differ in length.
+ ///
/// The array of transformed elements.
[]
val mapi2: mapping:(int -> 'T1 -> 'T2 -> 'U) -> array1:'T1[] -> array2:'T2[] -> 'U[]
@@ -633,19 +779,25 @@ namespace Microsoft.FSharp.Collections
/// Builds a new array whose elements are the results of applying the given function
/// to each of the elements of the array. The integer index passed to the
/// function indicates the index of element being transformed.
+ ///
/// The function to transform elements and their indices.
/// The input array.
+ ///
/// The array of transformed elements.
- /// Thrown when the input array is null.
+ ///
+ /// Thrown when the input array is null.
[]
val mapi: mapping:(int -> 'T -> 'U) -> array:'T[] -> 'U[]
/// Returns the greatest of all elements of the array, compared via Operators.max on the function result.
///
/// Throws ArgumentException for empty arrays.
+ ///
/// The input array.
- /// Thrown when the input array is null.
- /// Thrown when the input array is empty.
+ ///
+ /// Thrown when the input array is null.
+ /// Thrown when the input array is empty.
+ ///
/// The maximum element.
[]
val inline max : array:'T[] -> 'T when 'T : comparison
@@ -653,10 +805,13 @@ namespace Microsoft.FSharp.Collections
/// Returns the greatest of all elements of the array, compared via Operators.max on the function result.
///
/// Throws ArgumentException for empty arrays.
+ ///
/// The function to transform the elements into a type supporting comparison.
/// The input array.
- /// Thrown when the input array is null.
- /// Thrown when the input array is empty.
+ ///
+ /// Thrown when the input array is null.
+ /// Thrown when the input array is empty.
+ ///
/// The maximum element.
[]
val inline maxBy : projection:('T -> 'U) -> array:'T[] -> 'T when 'U : comparison
@@ -664,9 +819,12 @@ namespace Microsoft.FSharp.Collections
/// Returns the lowest of all elements of the array, compared via Operators.min.
///
/// Throws ArgumentException for empty arrays
+ ///
/// The input array.
- /// Thrown when the input array is null.
- /// Thrown when the input array is empty.
+ ///
+ /// Thrown when the input array is null.
+ /// Thrown when the input array is empty.
+ ///
/// The minimum element.
[]
val inline min : array:'T[] -> 'T when 'T : comparison
@@ -674,24 +832,32 @@ namespace Microsoft.FSharp.Collections
/// Returns the lowest of all elements of the array, compared via Operators.min on the function result.
///
/// Throws ArgumentException for empty arrays.
+ ///
/// The function to transform the elements into a type supporting comparison.
/// The input array.
- /// Thrown when the input array is null.
- /// Thrown when the input array is empty.
+ ///
+ /// Thrown when the input array is null.
+ /// Thrown when the input array is empty.
+ ///
/// The minimum element.
[]
val inline minBy : projection:('T -> 'U) -> array:'T[] -> 'T when 'U : comparison
/// Builds an array from the given list.
+ ///
/// The input list.
+ ///
/// The array of elements from the list.
[]
val ofList: list:'T list -> 'T[]
/// Builds a new array from the given enumerable object.
+ ///
/// The input sequence.
+ ///
/// The array of elements from the sequence.
- /// Thrown when the input sequence is null.
+ ///
+ /// Thrown when the input sequence is null.
[]
val ofSeq: source:seq<'T> -> 'T[]
@@ -702,28 +868,34 @@ namespace Microsoft.FSharp.Collections
///
/// The result array.
///
- /// Thrown when the input sequence is null.
+ /// Thrown when the input sequence is null.
[]
val pairwise: array:'T[] -> ('T * 'T)[]
/// Splits the collection into two collections, containing the
/// elements for which the given predicate returns "true" and "false"
/// respectively.
+ ///
/// The function to test the input elements.
/// The input array.
+ ///
/// A pair of arrays. The first containing the elements the predicate evaluated to true,
/// and the second containing those evaluated to false.
- /// Thrown when the input array is null.
+ ///
+ /// Thrown when the input array is null.
[]
val partition: predicate:('T -> bool) -> array:'T[] -> 'T[] * 'T[]
/// Returns an array with all elements permuted according to the
/// specified permutation.
+ ///
/// The function that maps input indices to output indices.
/// The input array.
+ ///
/// The output array.
- /// Thrown when the input array is null.
- /// Thrown when indexMap does not produce a valid permutation.
+ ///
+ /// Thrown when the input array is null.
+ /// Thrown when indexMap does not produce a valid permutation.
[]
val permute : indexMap:(int -> int) -> array:'T[] -> 'T[]
@@ -731,10 +903,13 @@ namespace Microsoft.FSharp.Collections
/// through the computation. If the input function is f and the elements are i0...iN
/// then computes f (... (f i0 i1)...) iN.
/// Raises ArgumentException if the array has size zero.
+ ///
/// The function to reduce a pair of elements to a single element.
/// The input array.
- /// Thrown when the input array is null.
- /// Thrown when the input array is empty.
+ ///
+ /// Thrown when the input array is null.
+ /// Thrown when the input array is empty.
+ ///
/// The final result of the reductions.
[]
val reduce: reduction:('T -> 'T -> 'T) -> array:'T[] -> 'T
@@ -742,45 +917,60 @@ namespace Microsoft.FSharp.Collections
/// 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-1 iN)).
+ ///
/// A function that takes in the next-to-last element of the list and the
/// current accumulated result to produce the next accumulated result.
/// The input array.
- /// Thrown when the input array is null.
- /// Thrown when the input array is empty.
+ ///
+ /// Thrown when the input array is null.
+ /// Thrown when the input array is empty.
+ ///
/// The final result of the reductions.
[]
val reduceBack: reduction:('T -> 'T -> 'T) -> array:'T[] -> 'T
/// Creates an array by replicating the given initial value.
+ ///
/// The number of elements to replicate.
/// The value to replicate
+ ///
/// The generated array.
- /// Thrown when count is negative.
+ ///
+ /// Thrown when count is negative.
[]
val replicate: count:int -> initial:'T -> 'T[]
/// Returns a new array with the elements in reverse order.
+ ///
/// The input array.
+ ///
/// The reversed array.
- /// Thrown when the input array is null.
+ ///
+ /// Thrown when the input array is null.
[]
val rev: array:'T[] -> 'T[]
/// Like fold, but return the intermediary and final results.
+ ///
/// The function to update the state given the input elements.
/// The initial state.
/// The input array.
+ ///
/// The array of state values.
- /// Thrown when the input array is null.
+ ///
+ /// Thrown when the input array is null.
[]
val scan<'T,'State> : folder:('State -> 'T -> 'State) -> state:'State -> array:'T[] -> 'State[]
/// Like foldBack, but return both the intermediary and final results.
+ ///
/// The function to update the state given the input elements.
/// The input array.
/// The initial state.
+ ///
/// The array of state values.
- /// Thrown when the input array is null.
+ ///
+ /// Thrown when the input array is null.
[]
val scanBack<'T,'State> : folder:('T -> 'State -> 'State) -> array:'T[] -> state:'State -> 'State[]
@@ -793,41 +983,52 @@ namespace Microsoft.FSharp.Collections
val inline singleton: value:'T -> 'T[]
/// Sets an element of an array.
+ ///
/// The input array.
/// The input index.
/// The input value.
- /// Thrown when the input array is null.
- /// Thrown when the index is negative or the input array does not contain enough elements.
+ ///
+ /// Thrown when the input array is null.
+ /// Thrown when the index is negative or the input array does not contain enough elements.
[]
val set: array:'T[] -> index:int -> value:'T -> unit
/// Builds a new array that contains the elements of the given array, excluding the first N elements.
+ ///
/// The number of elements to skip.
/// The input array.
+ ///
/// A copy of the input array, after removing the first N elements.
- /// Thrown when the input array is null.
- /// Thrown when count is negative or exceeds the number of
+ ///
+ /// Thrown when the input array is null.
+ /// Thrown when count is negative or exceeds the number of
/// elements in the array.
[]
val skip: count:int -> array:'T[] -> 'T[]
/// Bypasses elements in an array while the given predicate returns True, and then returns
/// the remaining elements in a new array.
+ ///
/// A function that evaluates an element of the array to a boolean value.
/// The input array.
+ ///
/// The created sub array.
- /// Thrown when the input array is null.
+ ///
+ /// Thrown when the input array is null.
[]
val skipWhile: predicate:('T -> bool) -> array:'T[] -> 'T[]
/// Builds a new array that contains the given subrange specified by
/// starting index and length.
+ ///
/// The input array.
/// The index of the first element of the sub array.
/// The length of the sub array.
+ ///
/// The created sub array.
- /// Thrown when the input array is null.
- /// Thrown when either startIndex or count is negative,
+ ///
+ /// Thrown when the input array is null.
+ /// Thrown when either startIndex or count is negative,
/// or when there aren't enough elements in the input array.
[]
val sub: array:'T[] -> startIndex:int -> count:int -> 'T[]
@@ -836,9 +1037,12 @@ namespace Microsoft.FSharp.Collections
///
/// This is not a stable sort, i.e. the original order of equal elements is not necessarily preserved.
/// For a stable sort, consider using Seq.sort.
+ ///
/// The input array.
+ ///
/// The sorted array.
- /// Thrown when the input array is null.
+ ///
+ /// Thrown when the input array is null.
[]
val sort: array:'T[] -> 'T[] when 'T : comparison
@@ -847,10 +1051,13 @@ namespace Microsoft.FSharp.Collections
///
/// This is not a stable sort, i.e. the original order of equal elements is not necessarily preserved.
/// For a stable sort, consider using Seq.sort.
+ ///
/// The function to transform array elements into the type that is compared.
/// The input array.
+ ///
/// The sorted array.
- /// Thrown when the input array is null.
+ ///
+ /// Thrown when the input array is null.
[]
val sortBy: projection:('T -> 'Key) -> array:'T[] -> 'T[] when 'Key : comparison
@@ -858,10 +1065,13 @@ namespace Microsoft.FSharp.Collections
///
/// This is not a stable sort, i.e. the original order of equal elements is not necessarily preserved.
/// For a stable sort, consider using Seq.sort.
+ ///
/// The function to compare pairs of array elements.
/// The input array.
+ ///
/// The sorted array.
- /// Thrown when the input array is null.
+ ///
+ /// Thrown when the input array is null.
[]
val sortWith: comparer:('T -> 'T -> int) -> array:'T[] -> 'T[]
@@ -870,35 +1080,43 @@ namespace Microsoft.FSharp.Collections
///
/// This is not a stable sort, i.e. the original order of equal elements is not necessarily preserved.
/// For a stable sort, consider using Seq.sort.
+ ///
/// The function to transform array elements into the type that is compared.
/// The input array.
- /// Thrown when the input array is null.
+ ///
+ /// Thrown when the input array is null.
[]
val sortInPlaceBy: projection:('T -> 'Key) -> array:'T[] -> unit when 'Key : comparison
/// Sorts the elements of an array by mutating the array in-place, using the given comparison function as the order.
+ ///
/// The function to compare pairs of array elements.
/// The input array.
- /// Thrown when the input array is null.
+ ///
+ /// Thrown when the input array is null.
[]
val sortInPlaceWith: comparer:('T -> 'T -> int) -> array:'T[] -> unit
/// Sorts the elements of an array by mutating the array in-place, using the given comparison function.
/// Elements are compared using Operators.compare.
+ ///
/// The input array.
- /// Thrown when the input array is null.
+ ///
+ /// Thrown when the input array is null.
[]
val sortInPlace: array:'T[] -> unit when 'T : comparison
/// Splits an array into two arrays, at the given index.
+ ///
/// The index at which the array is split.
/// The input array.
+ ///
/// The two split arrays.
///
- /// Thrown when the input array is null.
- /// Thrown when split index exceeds the number of elements
+ /// Thrown when the input array is null.
+ /// Thrown when split index exceeds the number of elements
/// in the array.
[]
val splitAt: index:int -> array:'T[] -> ('T[] * 'T[])
@@ -907,7 +1125,9 @@ namespace Microsoft.FSharp.Collections
///
/// This is not a stable sort, i.e. the original order of equal elements is not necessarily preserved.
/// For a stable sort, consider using Seq.sort.
+ ///
/// The input array.
+ ///
/// The sorted array.
[]
val inline sortDescending: array:'T[] -> 'T[] when 'T : comparison
@@ -917,16 +1137,21 @@ namespace Microsoft.FSharp.Collections
///
/// This is not a stable sort, i.e. the original order of equal elements is not necessarily preserved.
/// For a stable sort, consider using Seq.sort.
+ ///
/// The function to transform array elements into the type that is compared.
/// The input array.
+ ///
/// The sorted array.
[]
val inline sortByDescending: projection:('T -> 'Key) -> array:'T[] -> 'T[] when 'Key : comparison
/// Returns the sum of the elements in the array.
+ ///
/// The input array.
+ ///
/// The resulting sum.
- /// Thrown when the input array is null.
+ ///
+ /// Thrown when the input array is null.
[]
val inline sum : array: ^T[] -> ^T
when ^T : (static member ( + ) : ^T * ^T -> ^T)
@@ -934,10 +1159,13 @@ namespace Microsoft.FSharp.Collections
/// Returns the sum of the results generated by applying the function to each element of the array.
+ ///
/// The function to transform the array elements into the type to be summed.
/// The input array.
+ ///
/// The resulting sum.
- /// Thrown when the input array is null.
+ ///
+ /// Thrown when the input array is null.
[]
val inline sumBy : projection:('T -> ^U) -> array:'T[] -> ^U
when ^U : (static member ( + ) : ^U * ^U -> ^U)
@@ -953,9 +1181,9 @@ namespace Microsoft.FSharp.Collections
///
/// The result array.
///
- /// Thrown when the input array is null.
- /// Thrown when the input array is empty.
- /// Thrown when count exceeds the number of elements
+ /// Thrown when the input array is null.
+ /// Thrown when the input array is empty.
+ /// Thrown when count exceeds the number of elements
/// in the list.
[]
val take: count:int -> array:'T[] -> 'T[]
@@ -968,154 +1196,202 @@ namespace Microsoft.FSharp.Collections
///
/// The result array.
///
- /// Thrown when the input array is null.
+ /// Thrown when the input array is null.
[]
val takeWhile: predicate:('T -> bool) -> array:'T[] -> 'T[]
/// Returns a new array containing the elements of the original except the first element.
///
/// The input array.
- /// Thrown when the array is empty.
- /// Thrown when the input array is null.
+ ///
+ /// Thrown when the array is empty.
+ /// Thrown when the input array is null.
+ ///
/// A new array containing the elements of the original except the first element.
[]
val tail: array:'T[] -> 'T[]
/// Builds a list from the given array.
+ ///
/// The input array.
+ ///
/// The list of array elements.
- /// Thrown when the input array is null.
+ ///
+ /// Thrown when the input array is null.
[]
val toList: array:'T[] -> 'T list
/// Views the given array as a sequence.
+ ///
/// The input array.
+ ///
/// The sequence of array elements.
- /// Thrown when the input array is null.
+ ///
+ /// Thrown when the input array is null.
[]
val toSeq: array:'T[] -> seq<'T>
/// Returns the transpose of the given sequence of arrays.
+ ///
/// The input sequence of arrays.
+ ///
/// The transposed array.
- /// Thrown when the input sequence is null.
- /// Thrown when the input arrays differ in length.
+ ///
+ /// Thrown when the input sequence is null.
+ /// Thrown when the input arrays differ in length.
[]
val transpose: arrays:seq<'T[]> -> 'T[][]
/// Returns at most N elements in a new array.
+ ///
/// The maximum number of items to return.
/// The input array.
+ ///
/// The result array.
- /// Thrown when the input array is null.
+ ///
+ /// Thrown when the input array is null.
[]
val truncate: count:int -> array:'T[] -> 'T[]
/// Returns the first element for which the given function returns True.
/// Return None if no such element exists.
+ ///
/// The function to test the input elements.
/// The input array.
+ ///
/// The first element that satisfies the predicate, or None.
- /// Thrown when the input array is null.
+ ///
+ /// Thrown when the input array is null.
[]
val tryFind: predicate:('T -> bool) -> array:'T[] -> 'T option
/// Returns the last element for which the given function returns True.
/// Return None if no such element exists.
+ ///
/// The function to test the input elements.
/// The input array.
- /// Thrown when the input array is null.
+ ///
+ /// Thrown when the input array is null.
+ ///
/// The last element that satisfies the predicate, or None.
[]
val tryFindBack: predicate:('T -> bool) -> array:'T[] -> 'T option
/// Returns the index of the first element in the array
/// that satisfies the given predicate.
+ ///
/// The function to test the input elements.
/// The input array.
- /// Thrown when the input array is null.
+ ///
+ /// Thrown when the input array is null.
+ ///
/// The index of the first element that satisfies the predicate, or None.
[]
val tryFindIndex : predicate:('T -> bool) -> array:'T[] -> int option
/// Tries to find the nth element in the array.
/// Returns None if index is negative or the input array does not contain enough elements.
+ ///
/// The index of element to retrieve.
/// The input array.
+ ///
/// The nth element of the array or None.
- /// Thrown when the input array is null.
+ ///
+ /// Thrown when the input array is null.
[]
val tryItem: index:int -> array:'T[] -> 'T option
/// Returns the index of the last element in the array
/// that satisfies the given predicate.
+ ///
/// The function to test the input elements.
/// The input array.
- /// Thrown when the input array is null.
+ ///
+ /// Thrown when the input array is null.
+ ///
/// The index of the last element that satisfies the predicate, or None.
[]
val tryFindIndexBack : predicate:('T -> bool) -> array:'T[] -> int option
/// Returns an array that contains the elements generated by the given computation.
/// The given initial state argument is passed to the element generator.
+ ///
/// A function that takes in the current state and returns an option tuple of the next
/// element of the array and the next state value.
/// The initial state value.
+ ///
/// The result array.
[]
val unfold<'T,'State> : generator:('State -> ('T * 'State) option) -> state:'State -> 'T[]
/// Splits an array of pairs into two arrays.
+ ///
/// The input array.
+ ///
/// The two arrays.
- /// Thrown when the input array is null.
+ ///
+ /// Thrown when the input array is null.
[]
val unzip: array:('T1 * 'T2)[] -> ('T1[] * 'T2[])
/// Splits an array of triples into three arrays.
+ ///
/// The input array.
+ ///
/// The tuple of three arrays.
- /// Thrown when the input array is null.
+ ///
+ /// Thrown when the input array is null.
[]
val unzip3: array:('T1 * 'T2 * 'T3)[] -> ('T1[] * 'T2[] * 'T3[])
/// Returns a new array containing only the elements of the array
/// 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.
+ /// Thrown when the input array is null.
[]
val where: predicate:('T -> bool) -> array:'T[] -> 'T[]
/// Returns an array of sliding windows containing elements drawn from the input
/// array. Each window is returned as a fresh array.
+ ///
/// The number of elements in each window.
/// The input array.
+ ///
/// The result array.
- /// Thrown when the input array is null.
- /// Thrown when windowSize is not positive.
+ ///
+ /// Thrown when the input array is null.
+ /// Thrown when windowSize is not positive.
[]
val windowed : windowSize:int -> array:'T[] -> 'T[][]
/// Combines the two arrays into an array of pairs. The two arrays must have equal lengths, otherwise an ArgumentException is
/// raised.
+ ///
/// 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.
+ ///
+ /// Thrown when either of the input arrays is null.
+ /// Thrown when the input arrays differ in length.
+ ///
/// The array of tupled elements.
[]
val zip: array1:'T1[] -> array2:'T2[] -> ('T1 * 'T2)[]
/// Combines three arrays into an array of pairs. The three arrays must have equal lengths, otherwise an ArgumentException is
/// raised.
+ ///
/// The first input array.
/// The second input array.
/// The third input array.
- /// Thrown when any of the input arrays are null.
- /// Thrown when the input arrays differ in length.
+ ///
+ /// Thrown when any of the input arrays are null.
+ /// Thrown when the input arrays differ in length.
+ ///
/// The array of tupled elements.
[]
val zip3: array1:'T1[] -> array2:'T2[] -> array3:'T3[] -> ('T1 * 'T2 * 'T3)[]
@@ -1129,10 +1405,13 @@ namespace Microsoft.FSharp.Collections
///
/// Performs the operation in parallel using System.Threading.Parallel.For.
/// The order in which the given function is applied to elements of the input array is not specified.
+ ///
/// The function to generate options from the elements.
/// The input array.
+ ///
/// 'U[]
- /// Thrown when the input array is null.
+ ///
+ /// Thrown when the input array is null.
[]
val choose: chooser:('T -> 'U option) -> array:'T[] -> 'U[]
@@ -1140,10 +1419,13 @@ namespace Microsoft.FSharp.Collections
///
/// Performs the operation in parallel using System.Threading.Parallel.For.
/// The order in which the given function is applied to elements of the input array is not specified.
+ ///
///
/// The input array.
+ ///
/// 'U[]
- /// Thrown when the input array is null.
+ ///
+ /// Thrown when the input array is null.
[]
val collect : mapping:('T -> 'U[]) -> array:'T[] -> 'U[]
@@ -1152,10 +1434,13 @@ namespace Microsoft.FSharp.Collections
///
/// Performs the operation in parallel using System.Threading.Parallel.For.
/// The order in which the given function is applied to elements of the input array is not specified.
+ ///
///
/// The input array.
+ ///
/// 'U[]
- /// Thrown when the input array is null.
+ ///
+ /// Thrown when the input array is null.
[]
val map : mapping:('T -> 'U) -> array:'T[] -> 'U[]
@@ -1165,10 +1450,13 @@ namespace Microsoft.FSharp.Collections
///
/// Performs the operation in parallel using System.Threading.Parallel.For.
/// The order in which the given function is applied to elements of the input array is not specified.
+ ///
///
/// The input array.
+ ///
/// 'U[]
- /// Thrown when the input array is null.
+ ///
+ /// Thrown when the input array is null.
[]
val mapi: mapping:(int -> 'T -> 'U) -> array:'T[] -> 'U[]
@@ -1176,9 +1464,11 @@ namespace Microsoft.FSharp.Collections
///
/// Performs the operation in parallel using System.Threading.Parallel.For.
/// The order in which the given function is applied to elements of the input array is not specified.
+ ///
///
/// The input array.
- /// Thrown when the input array is null.
+ ///
+ /// Thrown when the input array is null.
[]
val iter : action:('T -> unit) -> array:'T[] -> unit
@@ -1187,9 +1477,11 @@ namespace Microsoft.FSharp.Collections
///
/// Performs the operation in parallel using System.Threading.Parallel.For.
/// The order in which the given function is applied to elements of the input array is not specified.
+ ///
///
/// The input array.
- /// Thrown when the input array is null.
+ ///
+ /// Thrown when the input array is null.
[]
val iteri: action:(int -> 'T -> unit) -> array:'T[] -> unit
@@ -1197,8 +1489,10 @@ namespace Microsoft.FSharp.Collections
///
/// Performs the operation in parallel using System.Threading.Parallel.For.
/// The order in which the given function is applied to indices is not specified.
+ ///
///
///
+ ///
/// 'T[]
[]
val init : count:int -> initializer:(int -> 'T) -> 'T[]
@@ -1209,9 +1503,12 @@ namespace Microsoft.FSharp.Collections
///
/// Performs the operation in parallel using System.Threading.Parallel.For.
/// The order in which the given function is applied to indices is not specified.
+ ///
/// The function to test the input elements.
/// The input array.
+ ///
/// 'T[] * 'T[]
- /// Thrown when the input array is null.
+ ///
+ /// Thrown when the input array is null.
[]
val partition : predicate:('T -> bool) -> array:'T[] -> 'T[] * 'T[]
diff --git a/src/fsharp/FSharp.Core/array2.fsi b/src/fsharp/FSharp.Core/array2.fsi
index 86a3d5be5c43..23d4e36b9e24 100644
--- a/src/fsharp/FSharp.Core/array2.fsi
+++ b/src/fsharp/FSharp.Core/array2.fsi
@@ -10,7 +10,10 @@ namespace Microsoft.FSharp.Collections
[]
/// Basic operations on 2-dimensional arrays.
///
- /// F# and CLI multi-dimensional arrays are typically zero-based.
+ ///
+ /// See also F# Language Guide - Arrays.
+ ///
+ /// F# and CLI multi-dimensional arrays are typically zero-based.
/// However, CLI multi-dimensional arrays used in conjunction with external
/// libraries (e.g. libraries associated with Visual Basic) be
/// non-zero based, using a potentially different base for each dimension.
@@ -18,7 +21,8 @@ namespace Microsoft.FSharp.Collections
/// the basing on an input array will be propagated to a matching output
/// array on the Array2D.map and Array2D.mapi operations.
/// Non-zero-based arrays can also be created using Array2D.zeroCreateBased,
- /// Array2D.createBased and Array2D.initBased.
+ /// Array2D.createBased and Array2D.initBased.
+ ///
module Array2D =
/// Fetches the base-index for the first dimension of the array.
@@ -58,7 +62,7 @@ namespace Microsoft.FSharp.Collections
/// The second-dimension index to begin copying into in the target array.
/// The number of elements to copy across the first dimension of the arrays.
/// The number of elements to copy across the second dimension of the arrays.
- /// Thrown when any of the indices are negative or if either of
+ /// Thrown when any of the indices are negative or if either of
/// the counts are larger than the dimensions of the array allow.
[]
val blit: source:'T[,] -> sourceIndex1:int -> sourceIndex2:int -> target:'T[,] -> targetIndex1:int -> targetIndex2:int -> length1:int -> length2:int -> unit
@@ -70,7 +74,7 @@ namespace Microsoft.FSharp.Collections
/// A function to produce elements of the array given the two indices.
///
/// The generated array.
- /// Thrown when either of the lengths is negative.
+ /// Thrown when either of the lengths is negative.
[]
val init: length1:int -> length2:int -> initializer:(int -> int -> 'T) -> 'T[,]
@@ -81,7 +85,7 @@ namespace Microsoft.FSharp.Collections
/// The value to populate the new array.
///
/// The created array.
- /// Thrown when length1 or length2 is negative.
+ /// Thrown when length1 or length2 is negative.
[]
val create: length1:int -> length2:int -> value:'T -> 'T[,]
@@ -91,7 +95,7 @@ namespace Microsoft.FSharp.Collections
/// The length of the second dimension of the array.
///
/// The created array.
- /// Thrown when length1 or length2 is negative.
+ /// Thrown when length1 or length2 is negative.
[]
val zeroCreate : length1:int -> length2:int -> 'T[,]
@@ -104,7 +108,7 @@ namespace Microsoft.FSharp.Collections
/// A function to produce elements of the array given the two indices.
///
/// The created array.
- /// Thrown when base1, base2, length1, or length2 is negative.
+ /// Thrown when base1, base2, length1, or length2 is negative.
[]
val initBased: base1:int -> base2:int -> length1:int -> length2:int -> initializer:(int -> int -> 'T) -> 'T[,]
@@ -117,7 +121,7 @@ namespace Microsoft.FSharp.Collections
/// The value to populate the new array.
///
/// The created array.
- /// Thrown when base1, base2, length1, or length2 is negative.
+ /// Thrown when base1, base2, length1, or length2 is negative.
[]
val createBased: base1:int -> base2:int -> length1:int -> length2:int -> initial: 'T -> 'T[,]
@@ -129,7 +133,7 @@ namespace Microsoft.FSharp.Collections
/// The length of the second dimension of the array.
///
/// The created array.
- /// Thrown when base1, base2, length1, or length2 is negative.
+ /// Thrown when base1, base2, length1, or length2 is negative.
[]
val zeroCreateBased : base1:int -> base2:int -> length1:int -> length2:int -> 'T[,]
@@ -209,7 +213,7 @@ namespace Microsoft.FSharp.Collections
/// The index along the first dimension.
/// The index along the second dimension.
/// The value to set in the array.
- /// Thrown when the indices are negative or exceed the bounds of the array.
+ /// Thrown when the indices are negative or exceed the bounds of the array.
[]
val set: array:'T[,] -> index1:int -> index2:int -> value:'T -> unit
@@ -220,7 +224,7 @@ namespace Microsoft.FSharp.Collections
/// The index along the second dimension.
///
/// The value of the array at the given index.
- /// Thrown when the indices are negative or exceed the bounds of the array.
+ /// Thrown when the indices are negative or exceed the bounds of the array.
[]
val get: array:'T[,] -> index1:int -> index2:int -> 'T
diff --git a/src/fsharp/FSharp.Core/array3.fsi b/src/fsharp/FSharp.Core/array3.fsi
index e5372c9084d1..cba604b2266c 100644
--- a/src/fsharp/FSharp.Core/array3.fsi
+++ b/src/fsharp/FSharp.Core/array3.fsi
@@ -10,6 +10,10 @@ namespace Microsoft.FSharp.Collections
[]
[]
/// Basic operations on rank 3 arrays.
+ ///
+ ///
+ /// See also F# Language Guide - Arrays.
+ ///
module Array3D =
/// Creates an array whose elements are all initially the given value.
@@ -17,29 +21,35 @@ namespace Microsoft.FSharp.Collections
/// The length of the second dimension.
/// The length of the third dimension.
/// The value of the array elements.
+ ///
/// The created array.
[]
val create: length1:int -> length2:int -> length3:int -> initial:'T -> 'T[,,]
/// Creates an array given the dimensions and a generator function to compute the elements.
+ ///
/// The length of the first dimension.
/// The length of the second dimension.
/// The length of the third dimension.
/// The function to create an initial value at each index into the array.
+ ///
/// The created array.
[]
val init: length1:int -> length2:int -> length3:int -> initializer:(int -> int -> int -> 'T) -> 'T[,,]
/// Fetches an element from a 3D array. You can also use the syntax 'array.[index1,index2,index3]'
+ ///
/// The input array.
/// The index along the first dimension.
/// The index along the second dimension.
/// The index along the third dimension.
+ ///
/// The value at the given index.
[]
val get: array:'T[,,] -> index1:int -> index2:int -> index3:int -> 'T
/// Applies the given function to each element of the array.
+ ///
/// The function to apply to each element of the array.
/// The input array.
[]
@@ -47,25 +57,32 @@ namespace Microsoft.FSharp.Collections
/// Applies the given function to each element of the array. The integer indices passed to the
/// function indicates the index of element.
+ ///
/// The function to apply to each element of the array.
/// The input array.
[]
val iteri: action:(int -> int -> int -> 'T -> unit) -> array:'T[,,] -> unit
/// Returns the length of an array in the first dimension
+ ///
/// The input array.
+ ///
/// The length of the array in the first dimension.
[]
val length1: array:'T[,,] -> int
/// Returns the length of an array in the second dimension.
+ ///
/// The input array.
+ ///
/// The length of the array in the second dimension.
[]
val length2: array:'T[,,] -> int
/// Returns the length of an array in the third dimension.
+ ///
/// The input array.
+ ///
/// The length of the array in the third dimension.
[]
val length3: array:'T[,,] -> int
@@ -77,6 +94,7 @@ namespace Microsoft.FSharp.Collections
/// array.
/// The function to transform each element of the array.
/// The input array.
+ ///
/// The array created from the transformed elements.
[]
val map: mapping:('T -> 'U) -> array:'T[,,] -> 'U[,,]
@@ -89,12 +107,14 @@ namespace Microsoft.FSharp.Collections
/// array.
/// The function to transform the elements at each index in the array.
/// The input array.
+ ///
/// The array created from the transformed elements.
[]
val mapi: mapping:(int -> int -> int -> 'T -> 'U) -> array:'T[,,] -> 'U[,,]
/// Sets the value of an element in an array. You can also
/// use the syntax 'array.[index1,index2,index3] <- value'.
+ ///
/// The input array.
/// The index along the first dimension.
/// The index along the second dimension.
@@ -104,9 +124,11 @@ namespace Microsoft.FSharp.Collections
val set: array:'T[,,] -> index1:int -> index2:int -> index3:int -> value:'T -> unit
/// Creates an array where the entries are initially the "default" value.
+ ///
/// The length of the first dimension.
/// The length of the second dimension.
/// The length of the third dimension.
+ ///
/// The created array.
[]
val zeroCreate: length1:int -> length2:int -> length3:int -> 'T[,,]
@@ -119,70 +141,87 @@ namespace Microsoft.FSharp.Collections
module Array4D =
/// Creates an array whose elements are all initially the given value
+ ///
/// The length of the first dimension.
/// The length of the second dimension.
/// The length of the third dimension.
/// The length of the fourth dimension.
/// The initial value for each element of the array.
+ ///
/// The created array.
[]
val create: length1:int -> length2:int -> length3:int -> length4:int -> initial:'T -> 'T[,,,]
/// Creates an array given the dimensions and a generator function to compute the elements.
+ ///
/// The length of the first dimension.
/// The length of the second dimension.
/// The length of the third dimension.
/// The length of the fourth dimension.
/// The function to create an initial value at each index in the array.
+ ///
/// The created array.
[]
val init: length1:int -> length2:int -> length3:int -> length4:int -> initializer:(int -> int -> int -> int -> 'T) -> 'T[,,,]
/// Returns the length of an array in the first dimension
+ ///
/// The input array.
+ ///
/// The length of the array in the first dimension.
[]
val length1: array:'T[,,,] -> int
/// Returns the length of an array in the second dimension.
+ ///
/// The input array.
+ ///
/// The length of the array in the second dimension.
[]
val length2: array:'T[,,,] -> int
/// Returns the length of an array in the third dimension.
+ ///
/// The input array.
+ ///
/// The length of the array in the third dimension.
[]
val length3: array:'T[,,,] -> int
/// Returns the length of an array in the fourth dimension.
+ ///
/// The input array.
+ ///
/// The length of the array in the fourth dimension.
[]
val length4: array:'T[,,,] -> int
/// Creates an array where the entries are initially the "default" value.
+ ///
/// The length of the first dimension.
/// The length of the second dimension.
/// The length of the third dimension.
/// The length of the fourth dimension.
+ ///
/// The created array.
[]
val zeroCreate: length1:int -> length2:int -> length3:int -> length4:int -> 'T[,,,]
/// Fetches an element from a 4D array. You can also use the syntax 'array.[index1,index2,index3,index4]'
+ ///
/// The input array.
/// The index along the first dimension.
/// The index along the second dimension.
/// The index along the third dimension.
/// The index along the fourth dimension.
+ ///
/// The value at the given index.
[]
val get: array:'T[,,,] -> index1:int -> index2:int -> index3:int -> index4:int -> 'T
/// Sets the value of an element in an array. You can also
/// use the syntax 'array.[index1,index2,index3,index4] <- value'.
+ ///
/// The input array.
/// The index along the first dimension.
/// The index along the second dimension.
diff --git a/src/fsharp/FSharp.Core/async.fsi b/src/fsharp/FSharp.Core/async.fsi
index 72502b9d26e9..b19d63cbfdcb 100644
--- a/src/fsharp/FSharp.Core/async.fsi
+++ b/src/fsharp/FSharp.Core/async.fsi
@@ -11,24 +11,25 @@ namespace Microsoft.FSharp.Control
open Microsoft.FSharp.Control
open Microsoft.FSharp.Collections
- /// A compositional asynchronous computation, which, when run, will eventually produce a value
- /// of type T, or else raises an exception.
+ ///
+ /// An asynchronous computation, which, when run, will eventually produce a value of type T, or else raises an exception.
+ ///
///
- /// Asynchronous computations are normally specified using an F# computation expression.
+ ///