RFCs and docs related to the F# language design process. The Process:
-
Use F# Language Suggestions to submit ideas, vote on them and discuss them.
-
Ideas which get "approved in principle" get an RFC entry based on the template, and a corresponding RFC discussion thread
There is currently a backlog of approved ideas. If an idea has been approved and you'd like to accelerate the creation of an RFC, send a PR creating the RFC document for any approved-in-principle issue. First in first served. To "grab the token" send a PR doing nothing but creating or naming the RFC file, and then fill in the further details with additional commits to the PR.
-
Implementations and testing are usually submitted to the visualfsharp repository and then integrated to fsharp and FSharp.Compiler.Service
All in-progress RFCs, listed in the RFC folder, are part of a future version of F#.
When RFCs are implemented and a version of F# is revved, the RFCs which correspond to the F# version they were implemented in are archived under the appropriate folder.
For RFCs that were implemented in F# 4.0, see the F# 4.0 RFCs
For RFCs that were implemented in F# 4.1, see the [F# 4.1 RFCs](https://github.com/fsharp/fslang-design/blob/master/FSharp-4.1
- F# RFC FS-1001 - String interpolation
- F# RFC FS-1003 - Add nameof Operator
- F# RFC FS-1007 - Additional Option module functions
- F# RFC FS-1011 - Warn when recursive function is not tail-recursive
- F# RFC FS-1018 - Adjust extension method scope
- F# RFC FS-1022 - Override ToString for discriminated unions and records
- F# RFC FS-1023 - Allow type providers to generate types from types
- F# RFC FS-1024 - Simplify call syntax for statically resolved member constraints
- F# RFC FS-1025 - Improve record type inference
- F# RFC FS-1026 - Allow params dictionaries as method arguments