F# Language
Preview
Added
- Better generic unmanaged structs handling. (Language suggestion #692, PR #12154)
- Deprecate places where
seq
can be omitted. (Language suggestion #1033, PR #17772) - Added type conversions cache, only enabled for compiler runs (PR#17668)
Fixed
- Warn on uppercase identifiers in patterns. (PR #15816)
Changed
9.0
Added
- Speed up
for x in xs -> …
in list & array comprehensions in certain scenarios. (PR #16948) - Lower integral ranges to fast loops in more cases and optimize list and array construction from ranges. (PR #16650, PR #16832)
- Support for nullable reference types (PR #15181)
- Bidirectional F#/C# interop for 'unmanaged' constraint. (PR #12154)
- Make
.Is*
discriminated union properties visible. (Language suggestion #222, PR #16341) - Allow returning bool instead of unit option for partial active patterns. (Language suggestion #1041, PR #16473)
- Allow access modifies to auto properties getters and setters (Language suggestion #430, PR 16687, PR 16861, PR 17522)
- Allow #nowarn to support the FS prefix on error codes to disable warnings (Issue #17206, PR #17209)
- Allow ParsedHashDirectives to have argument types other than strings (Issue #17240, PR #17209)
- Support empty-bodied computation expressions. (Language suggestion #1232, PR #17352)
- Allow object expression without overrides. (Language suggestion #632, PR #17387)
- Enable FSharp 9.0 Language Version (Issue #17497), PR))
Fixed
- Allow extension methods without type attribute work for types from imported assemblies. (PR #16368)
- Enforce AttributeTargets on let values and functions. (PR #16692)
- Enforce AttributeTargets on union case declarations. (PR #16764)
- Enforce AttributeTargets on implicit constructors. (PR #16845)
- Enforce AttributeTargets on structs and classes (PR #16790)
- Ensure consistent interaction between ``#line
and
#nowarn` directives (PR #17649)
Changed
- Lower interpolated strings to string concatenation. (PR #16556)
8.0
Fixed
- Disallow using base to invoke an abstract base method (Issue #13926, PR #16773)
Added
while!
(Language suggestion #1038, PR #14238)
namespace System
namespace System.IO
namespace Markdig
module Common
val path: string
type Path =
static member ChangeExtension: path: string * extension: string -> string
static member Combine: path1: string * path2: string -> string + 4 overloads
static member EndsInDirectorySeparator: path: ReadOnlySpan<char> -> bool + 1 overload
static member Exists: path: string -> bool
static member GetDirectoryName: path: ReadOnlySpan<char> -> ReadOnlySpan<char> + 1 overload
static member GetExtension: path: ReadOnlySpan<char> -> ReadOnlySpan<char> + 1 overload
static member GetFileName: path: ReadOnlySpan<char> -> ReadOnlySpan<char> + 1 overload
static member GetFileNameWithoutExtension: path: ReadOnlySpan<char> -> ReadOnlySpan<char> + 1 overload
static member GetFullPath: path: string -> string + 1 overload
static member GetInvalidFileNameChars: unit -> char array
...
<summary>Performs operations on <see cref="T:System.String" /> instances that contain file or directory path information. These operations are performed in a cross-platform manner.</summary>
<summary>Performs operations on <see cref="T:System.String" /> instances that contain file or directory path information. These operations are performed in a cross-platform manner.</summary>
Path.Combine(paths: System.ReadOnlySpan<string>) : string
Path.Combine([<System.ParamArray>] paths: string array) : string
Path.Combine(path1: string, path2: string) : string
Path.Combine(path1: string, path2: string, path3: string) : string
Path.Combine(path1: string, path2: string, path3: string, path4: string) : string
Path.Combine([<System.ParamArray>] paths: string array) : string
Path.Combine(path1: string, path2: string) : string
Path.Combine(path1: string, path2: string, path3: string) : string
Path.Combine(path1: string, path2: string, path3: string, path4: string) : string
type Directory =
static member CreateDirectory: path: string -> DirectoryInfo + 1 overload
static member CreateSymbolicLink: path: string * pathToTarget: string -> FileSystemInfo
static member CreateTempSubdirectory: ?prefix: string -> DirectoryInfo
static member Delete: path: string -> unit + 1 overload
static member EnumerateDirectories: path: string -> IEnumerable<string> + 3 overloads
static member EnumerateFileSystemEntries: path: string -> IEnumerable<string> + 3 overloads
static member EnumerateFiles: path: string -> IEnumerable<string> + 3 overloads
static member Exists: path: string -> bool
static member GetCreationTime: path: string -> DateTime
static member GetCreationTimeUtc: path: string -> DateTime
...
<summary>Exposes static methods for creating, moving, and enumerating through directories and subdirectories. This class cannot be inherited.</summary>
<summary>Exposes static methods for creating, moving, and enumerating through directories and subdirectories. This class cannot be inherited.</summary>
Directory.EnumerateFiles(path: string) : System.Collections.Generic.IEnumerable<string>
Directory.EnumerateFiles(path: string, searchPattern: string) : System.Collections.Generic.IEnumerable<string>
Directory.EnumerateFiles(path: string, searchPattern: string, searchOption: SearchOption) : System.Collections.Generic.IEnumerable<string>
Directory.EnumerateFiles(path: string, searchPattern: string, enumerationOptions: EnumerationOptions) : System.Collections.Generic.IEnumerable<string>
Directory.EnumerateFiles(path: string, searchPattern: string) : System.Collections.Generic.IEnumerable<string>
Directory.EnumerateFiles(path: string, searchPattern: string, searchOption: SearchOption) : System.Collections.Generic.IEnumerable<string>
Directory.EnumerateFiles(path: string, searchPattern: string, enumerationOptions: EnumerationOptions) : System.Collections.Generic.IEnumerable<string>
module Seq
from Microsoft.FSharp.Collections
val sortWith: comparer: ('T -> 'T -> int) -> source: 'T seq -> 'T seq
val a: string
val b: string
[<return:NotNullIfNotNullAttribute ("path")>]
Path.GetFileNameWithoutExtension(path: string) : string
Path.GetFileNameWithoutExtension(path: System.ReadOnlySpan<char>) : System.ReadOnlySpan<char>
Path.GetFileNameWithoutExtension(path: System.ReadOnlySpan<char>) : System.ReadOnlySpan<char>
Multiple items
[<Struct>] type Decimal = new: value: float -> unit + 8 overloads member CompareTo: value: decimal -> int + 1 overload member Equals: value: decimal -> bool + 2 overloads member GetHashCode: unit -> int member GetTypeCode: unit -> TypeCode member ToString: unit -> string + 3 overloads member TryFormat: utf8Destination: Span<byte> * bytesWritten: byref<int> * ?format: ReadOnlySpan<char> * ?provider: IFormatProvider -> bool + 1 overload static member (%) : d1: decimal * d2: decimal -> decimal static member ( * ) : d1: decimal * d2: decimal -> decimal static member (+) : d1: decimal * d2: decimal -> decimal ...
<summary>Represents a decimal floating-point number.</summary>
--------------------
System.Decimal ()
System.Decimal(value: float) : System.Decimal
System.Decimal(value: int) : System.Decimal
System.Decimal(bits: int array) : System.Decimal
System.Decimal(value: int64) : System.Decimal
System.Decimal(bits: System.ReadOnlySpan<int>) : System.Decimal
System.Decimal(value: float32) : System.Decimal
System.Decimal(value: uint32) : System.Decimal
System.Decimal(value: uint64) : System.Decimal
System.Decimal(lo: int, mid: int, hi: int, isNegative: bool, scale: byte) : System.Decimal
[<Struct>] type Decimal = new: value: float -> unit + 8 overloads member CompareTo: value: decimal -> int + 1 overload member Equals: value: decimal -> bool + 2 overloads member GetHashCode: unit -> int member GetTypeCode: unit -> TypeCode member ToString: unit -> string + 3 overloads member TryFormat: utf8Destination: Span<byte> * bytesWritten: byref<int> * ?format: ReadOnlySpan<char> * ?provider: IFormatProvider -> bool + 1 overload static member (%) : d1: decimal * d2: decimal -> decimal static member ( * ) : d1: decimal * d2: decimal -> decimal static member (+) : d1: decimal * d2: decimal -> decimal ...
<summary>Represents a decimal floating-point number.</summary>
--------------------
System.Decimal ()
System.Decimal(value: float) : System.Decimal
System.Decimal(value: int) : System.Decimal
System.Decimal(bits: int array) : System.Decimal
System.Decimal(value: int64) : System.Decimal
System.Decimal(bits: System.ReadOnlySpan<int>) : System.Decimal
System.Decimal(value: float32) : System.Decimal
System.Decimal(value: uint32) : System.Decimal
System.Decimal(value: uint64) : System.Decimal
System.Decimal(lo: int, mid: int, hi: int, isNegative: bool, scale: byte) : System.Decimal
System.Decimal.TryParse([<NotNullWhenAttribute (true)>] s: string, result: byref<decimal>) : bool
System.Decimal.TryParse(s: System.ReadOnlySpan<char>, result: byref<decimal>) : bool
System.Decimal.TryParse(utf8Text: System.ReadOnlySpan<byte>, result: byref<decimal>) : bool
System.Decimal.TryParse([<NotNullWhenAttribute (true)>] s: string, provider: System.IFormatProvider, result: byref<decimal>) : bool
System.Decimal.TryParse(s: System.ReadOnlySpan<char>, provider: System.IFormatProvider, result: byref<decimal>) : bool
System.Decimal.TryParse(utf8Text: System.ReadOnlySpan<byte>, provider: System.IFormatProvider, result: byref<decimal>) : bool
System.Decimal.TryParse([<NotNullWhenAttribute (true)>] s: string, style: System.Globalization.NumberStyles, provider: System.IFormatProvider, result: byref<decimal>) : bool
System.Decimal.TryParse(s: System.ReadOnlySpan<char>, style: System.Globalization.NumberStyles, provider: System.IFormatProvider, result: byref<decimal>) : bool
System.Decimal.TryParse(utf8Text: System.ReadOnlySpan<byte>, style: System.Globalization.NumberStyles, provider: System.IFormatProvider, result: byref<decimal>) : bool
System.Decimal.TryParse(s: System.ReadOnlySpan<char>, result: byref<decimal>) : bool
System.Decimal.TryParse(utf8Text: System.ReadOnlySpan<byte>, result: byref<decimal>) : bool
System.Decimal.TryParse([<NotNullWhenAttribute (true)>] s: string, provider: System.IFormatProvider, result: byref<decimal>) : bool
System.Decimal.TryParse(s: System.ReadOnlySpan<char>, provider: System.IFormatProvider, result: byref<decimal>) : bool
System.Decimal.TryParse(utf8Text: System.ReadOnlySpan<byte>, provider: System.IFormatProvider, result: byref<decimal>) : bool
System.Decimal.TryParse([<NotNullWhenAttribute (true)>] s: string, style: System.Globalization.NumberStyles, provider: System.IFormatProvider, result: byref<decimal>) : bool
System.Decimal.TryParse(s: System.ReadOnlySpan<char>, style: System.Globalization.NumberStyles, provider: System.IFormatProvider, result: byref<decimal>) : bool
System.Decimal.TryParse(utf8Text: System.ReadOnlySpan<byte>, style: System.Globalization.NumberStyles, provider: System.IFormatProvider, result: byref<decimal>) : bool
val a: decimal
val b: decimal
val compare: e1: 'T -> e2: 'T -> int (requires comparison)
Multiple items
val int: value: 'T -> int (requires member op_Explicit)
--------------------
type int = int32
--------------------
type int<'Measure> = int
val int: value: 'T -> int (requires member op_Explicit)
--------------------
type int = int32
--------------------
type int<'Measure> = int
val failwithf: format: Printf.StringFormat<'T,'Result> -> 'T
val map: mapping: ('T -> 'U) -> source: 'T seq -> 'U seq
val file: string
val version: string
val content: string
type File =
static member AppendAllBytes: path: string * bytes: byte array -> unit + 1 overload
static member AppendAllBytesAsync: path: string * bytes: byte array * ?cancellationToken: CancellationToken -> Task + 1 overload
static member AppendAllLines: path: string * contents: IEnumerable<string> -> unit + 1 overload
static member AppendAllLinesAsync: path: string * contents: IEnumerable<string> * encoding: Encoding * ?cancellationToken: CancellationToken -> Task + 1 overload
static member AppendAllText: path: string * contents: string -> unit + 3 overloads
static member AppendAllTextAsync: path: string * contents: string * encoding: Encoding * ?cancellationToken: CancellationToken -> Task + 3 overloads
static member AppendText: path: string -> StreamWriter
static member Copy: sourceFileName: string * destFileName: string -> unit + 1 overload
static member Create: path: string -> FileStream + 2 overloads
static member CreateSymbolicLink: path: string * pathToTarget: string -> FileSystemInfo
...
<summary>Provides static methods for the creation, copying, deletion, moving, and opening of a single file, and aids in the creation of <see cref="T:System.IO.FileStream" /> objects.</summary>
<summary>Provides static methods for the creation, copying, deletion, moving, and opening of a single file, and aids in the creation of <see cref="T:System.IO.FileStream" /> objects.</summary>
File.ReadAllText(path: string) : string
File.ReadAllText(path: string, encoding: System.Text.Encoding) : string
File.ReadAllText(path: string, encoding: System.Text.Encoding) : string
type Markdown =
static member Convert: markdown: string * renderer: IMarkdownRenderer * ?pipeline: MarkdownPipeline * ?context: MarkdownParserContext -> obj
static member Normalize: markdown: string * ?options: NormalizeOptions * ?pipeline: MarkdownPipeline * ?context: MarkdownParserContext -> string + 1 overload
static member Parse: markdown: string * ?trackTrivia: bool -> MarkdownDocument + 1 overload
static member ToHtml: markdown: string * ?pipeline: MarkdownPipeline * ?context: MarkdownParserContext -> string + 3 overloads
static member ToPlainText: markdown: string * writer: TextWriter * ?pipeline: MarkdownPipeline * ?context: MarkdownParserContext -> MarkdownDocument + 1 overload
static member Version: string
<summary> Provides methods for parsing a Markdown string to a syntax tree and converting it to other formats. </summary>
<summary> Provides methods for parsing a Markdown string to a syntax tree and converting it to other formats. </summary>
Markdown.ToHtml(document: Syntax.MarkdownDocument, ?pipeline: MarkdownPipeline) : string
Markdown.ToHtml(document: Syntax.MarkdownDocument, writer: TextWriter, ?pipeline: MarkdownPipeline) : unit
Markdown.ToHtml(markdown: string, ?pipeline: MarkdownPipeline, ?context: MarkdownParserContext) : string
Markdown.ToHtml(markdown: string, writer: TextWriter, ?pipeline: MarkdownPipeline, ?context: MarkdownParserContext) : Syntax.MarkdownDocument
Markdown.ToHtml(document: Syntax.MarkdownDocument, writer: TextWriter, ?pipeline: MarkdownPipeline) : unit
Markdown.ToHtml(markdown: string, ?pipeline: MarkdownPipeline, ?context: MarkdownParserContext) : string
Markdown.ToHtml(markdown: string, writer: TextWriter, ?pipeline: MarkdownPipeline, ?context: MarkdownParserContext) : Syntax.MarkdownDocument
val transformH3: version: string -> input: string -> string
In order for the heading to appear in the page content menu in fsdocs,
they need to follow a specific HTML structure.
In order for the heading to appear in the page content menu in fsdocs,
they need to follow a specific HTML structure.
module String
from Microsoft.FSharp.Core
val concat: sep: string -> strings: string seq -> string