The F# Language Specification gives an in-depth technical explanation of the F# language constructs and required compiler behavior. It discusses topics such as lexical analysis, grammar, types including type inference algorithm, expressions, patterns and other.

The F# Language Specification is authored by Microsoft, Microsoft Research and contributors from the F# community and is made available here by agreement.

F# 2.0

F# 3.0

F# 3.1

  • The F# 3.1 Language Specification (working draft) - The working draft of the F# 3.1 language specification.

    Comments and edits are both welcome. To contribute to the specification, please fork this repository, edit the working draft document, and send a pull request. The custodians of the specification (principally, the language designers at Microsoft Research) will review these pull requests and consider them for acceptance into the working drafts, which will then be updated here.

    MSWord is used to format and edit the working drafts of the specification. Finalized versions of the specification are published as PDF.