F Sharp (programming language): Difference between revisions

Content deleted Content added
WP:LINKs: update-standardizes, adds.
Language evolution: WP:LINKs: needless: underscores > spaces, WP:PIPEs > WP:NOPIPEs, semi-WP:EASTEREGG clarify for WP:LEAST surprise. Small WP:COPYEDITs WP:EoS WP:TERSE, cut needless word repeats. Cut needless: carriage return WP:LISTGAP whitespace characters between WP:TABLE items, needless spaces at line ends: to standardize, aid work via small screens.
Line 138:
Earlier versions of the F# language were designed by [[Microsoft]] and [[Microsoft Research]] using a closed development process.
 
F# was first included in Visual Studio in the [[Visual_StudioVisual Studio#2010 | 2010 edition]], at the same level as [[Visual Basic (.NET) | Visual Basic]] and C# (albeit as an option), and has remainedremains in subsequentall later editions, thus making the language widely available and well-supported.
 
F# originates from Microsoft Research, Cambridge, UK. The language was originally designed and implemented by [[Don Syme]],<ref name="historyMSR">{{cite web |url=https://www.microsoft.com/en-us/research/project/f-at-microsoft-research/ |title=F# Historical Acknowledgements |website=[[Microsoft]] }}</ref> according to whom in the fsharp team, they say the F is for "Fun".<ref>{{cite web |url=http://www.networkworld.com/article/2271225/software/the-a-z-of-programming-languages--f-.html |title=The A-Z of programming languages: F# |last1=Edwards |first1=Kathryn |date=23 December 2008 |website=[[Network World]] |publisher=IDG |access-date=8 August 2016 |archive-date=13 November 2018 |archive-url=https://web.archive.org/web/20181113210720/https://www.networkworld.com/article/2271225/software/the-a-z-of-programming-languages--f-.html |url-status=dead}}</ref>
Andrew Kennedy contributed to the design of [[units of measure]].<ref name="historyMSR"/> The Visual F# Tools for Visual Studio are developed by Microsoft.<ref name="historyMSR"/> The F# Software Foundation developed the F# open-source compiler and tools, incorporating the open-source compiler implementation provided by the Microsoft Visual F# Tools team.<ref name="fsharporg"/>
 
Line 146:
|+ Summary of versions
|-
! F#<br/>version
! !! Features added
|-
!F# 1.0
|valign="top"|
* Functional programming
Line 163 ⟶ 164:
* Modules (no functors)
* Nested modules
* .NET Interoperabilityinteroperability
|-
!F# 2.0
|
* Active patterns
Line 180 ⟶ 181:
* Computation expressions
|-
!F# 3.0<ref>{{cite web|last=McNamara|first=Brian|title=More About F# 3.0 Language Features|url=http://blogs.msdn.com/b/fsharpteam/archive/2012/07/19/more-about-fsharp-3.0-language-features.aspx|access-date=September 7, 2014|publisher=Microsoft}}</ref>
|
* Type providers
Line 189 ⟶ 190:
* Provided units-of-measure
|-
!F# 3.1<ref>{{cite web|last=McNamara|first=Brian|title=Announcing a pre-release of F# 3.1|url=http://blogs.msdn.com/b/fsharpteam/archive/2013/06/27/announcing-a-pre-release-of-f-3-1-and-the-visual-f-tools-in-visual-studio-2013.aspx|access-date=September 7, 2014|publisher=Microsoft}}</ref>
|
* Named union type fields
Line 195 ⟶ 196:
* Type inference enhancements
|-
!F# 4.0<ref>{{Cite news|title=Announcing the RTM of Visual F# 4.0|language=en-US|url=https://blogs.msdn.microsoft.com/dotnet/2015/07/20/announcing-the-rtm-of-visual-f-4-0/|access-date=2017-03-08}}</ref>
|
* Printf on unitized values
Line 209 ⟶ 210:
* Params dictionaries
|-
!F# 4.1<ref>{{Cite news|title=Announcing F# 4.1 and the Visual F# Tools for Visual Studio 2017|language=en-US|url=https://blogs.msdn.microsoft.com/dotnet/2017/03/07/announcing-f-4-1-and-the-visual-f-tools-for-visual-studio-2017-2/|access-date=2017-03-08}}</ref>
|
* Struct tuples which inter-operate with C# tuples
Line 223 ⟶ 224:
* Support for 'fixed'
|-
!F# 4.5<ref name="blogs.msdn.microsoft.com2"/>
|
* Versioning alignment of binary, package, and language
Line 238 ⟶ 239:
* Enumeration cases emitted as public
|-
!F# 4.6
|
* Anonymous record types
|-
!F# 4.7<ref name="blogs.msdn.microsoft.com.4.7">{{Cite web|url=https://devblogs.microsoft.com/dotnet/announcing-f-4-7/|title=Announcing F# 4.7|date=23 September 2019}}</ref>
|
* Implicit yields
Line 250 ⟶ 251:
* Open static classes
|-
!F# 5.0<ref name="blogs.msdn.microsoft.com.5.0">{{Cite web|url=https://devblogs.microsoft.com/dotnet/announcing-f-5/|title=Announcing F# 5|date=10 November 2020}}</ref>
|
* FSharp.Core now targets netstandard2.0 only
Line 267 ⟶ 268:
* Improved compiler analysis for library authors
|-
!F# 6.0<ref>{{Cite web|url=https://docs.microsoft.com/en-us/dotnet/fsharp/whats-new/fsharp-6|title=What's new in F# 6 - F# Guide|date=10 March 2023 }}</ref>
|
* Tasks
Line 275 ⟶ 276:
* “as” patterns
* Indentation syntax revisions
* AdditionalMore implicit conversions
* AdditionalMore implicit upcast conversions
* Implicit integer conversions
* First-class support for .NET-style implicit conversions
Line 284 ⟶ 285:
* InlineIfLambda optimizer directive
* Resumable code
* AdditionalMore collection functions
* Map has Keys and Values
* AdditionalMore intrinsics for NativePtr
* AdditionalMore numeric types with unit annotations
* Informational warnings for rarely used symbolic operators
|-
!F# 7.0<ref>{{Cite web |url=https://devblogs.microsoft.com/dotnet/announcing-fsharp-7/ |title=Announcing F# 7| |date=8 November 2022}}</ref>
|
* Static abstract members support in interfaces
Line 305 ⟶ 306:
* Parallel type-checking and project-checking support (experimental, can be enabled via VS setting, or by tooling authors)
* Miscellaneous bugfixes and improvements.
 
 
|-
!F# 8.0<ref>{{Cite web|url=https://devblogs.microsoft.com/dotnet/announcing-fsharp-8/|title=Announcing F# 8| date=14 November 2023}}</ref>
|
* _.Property shorthand for (fun x -> x.Property)
* Nested record field copy and update
* while! (while bang) feature <ref>{{Cite web |url=https://devblogs.microsoft.com/dotnet/simplifying-fsharp-computations-with-the-new-while-keyword/ |title=Simplifying F# computations with the new 'while!' keyword' | date=20 September 2023}}</ref>
* Extended string interpolation syntax
* Use and compose string literals for printf and related functions
* Arithmetic operators in literals
* Type constraint intersection syntax
* Extended fixed binding
* Easier [<Extension>] method definition
* Static members in interfaces
* Static let in discriminated unions, records, structs, and types without primary constructors
* try-with withing seq{}, [], and [||] collection expressions
* Recursive calls and yield! within exception handler
* Tail call attribute
* [<Struct>] unions can now have > 49 cases
* Strict indentation rules
* New diagnostics from the compiler
* Switches for compiler parallelization
 
 
 
|}