# F#

> Microsoft programming language

**Wikidata**: [Q648619](https://www.wikidata.org/wiki/Q648619)  
**Wikipedia**: [English](https://en.wikipedia.org/wiki/F_Sharp_(programming_language))  
**Source**: https://4ort.xyz/entity/f

## Summary
F# is a multi-paradigm programming language developed by Microsoft and the F Sharp Software Foundation that emphasizes functional programming principles. It is a cross-platform, statically typed language designed for communicating instructions to machines and is known for its strong type inference capabilities.

## Key Facts
- **Inception:** 2005
- **Primary Designer:** Don Syme (Microsoft Research)
- **Developers:** Microsoft and the F Sharp Software Foundation
- **License:** Apache License
- **Typing Discipline:** Static, strong, and inference typing
- **Programming Paradigms:** Functional, imperative, object-oriented, metaprogramming, reflective, and concurrent computing
- **File Extensions:** .fs, .fsi, .fsx, .fsscript
- **Operating System:** Cross-platform
- **Influenced by:** ML, OCaml, and Python

## FAQs
### Q: What is the primary programming paradigm of F#?
A: While F# is a multi-paradigm language supporting imperative and object-oriented programming, it is primarily classified as a functional programming language. It uses functional principles to communicate instructions to machines.

### Q: Who is responsible for the development and design of F#?
A: F# was designed by Don Syme at Microsoft Research. It is developed by the Microsoft corporation in conjunction with the F Sharp Software Foundation.

### Q: Is F# an open-source language?
A: Yes, F# is distributed under the Apache License and its source code is hosted publicly on GitHub.

### Q: What are the common file extensions used for F# code?
A: F# source files typically use the .fs extension, while signature files use .fsi. Scripting files use .fsx or .fsscript extensions.

## Why It Matters
F# serves as a significant bridge between functional programming and mainstream software development within the Microsoft ecosystem. By combining functional-first principles with imperative and object-oriented paradigms, it provides a versatile toolset for developers tackling complex systems, concurrent computing, and data-intensive applications. 

As a cross-platform language, it allows for development across different operating systems while maintaining the benefits of a strongly typed environment. Its use of type inference reduces the need for explicit type annotations, which can lead to more concise and readable code. Developed by Microsoft Research, F# has not only influenced other modern languages like Elm and LiveScript but also continues to play a role in the evolution of program verification through its influence on languages like F*.

## Notable For
- **Off-side rule language:** F# uses indentation to define blocks of code, similar to Python.
- **Type Inference:** The language supports inference typing, allowing the compiler to deduce data types automatically without explicit programmer declarations.
- **Multi-paradigm flexibility:** It uniquely integrates functional, object-oriented, and imperative programming styles in a single environment.
- **Open Governance:** It is maintained through a partnership between a major technology corporation (Microsoft) and an independent software foundation (F Sharp Software Foundation).

## Body
### Origins and Development
F# was established in 2005 at Microsoft Research. The primary designer of the language is Don Syme, an Australian computer scientist. The language was created to provide a functional programming option within the Microsoft technology stack and is currently developed by both Microsoft and the F Sharp Software Foundation.

### Technical Specifications and Paradigms
F# is a multi-paradigm language that supports a wide range of programming styles:
- **Functional programming:** The core paradigm of the language.
- **Object-oriented and Imperative programming:** Allows for traditional software structures.
- **Concurrent computing:** Designed to handle multiple simultaneous operations.
- **Metaprogramming and Reflective programming:** Provides advanced code manipulation capabilities.

The language utilizes a static and strong typing discipline. It is also an "off-side rule" language, meaning its structure is defined by indentation.

### Version History
F# has undergone several stable releases:
- **Version 3.1.1:** Released on January 24, 2014.
- **Version 3.1.1.x series:** Multiple minor updates (3.1.1.0 through 3.1.1.6) were released between February and March 2014.
- **Version 4.0:** A major version release.
- **Version 4.0.1.20:** A stable version released on November 13, 2016.

### Ecosystem and Community
The F# community is active across several platforms, including a dedicated subreddit (r/fsharp) and GitHub. The official source code repository is maintained at `https://github.com/dotnet/fsharp`. The language is supported by the F Sharp Software Foundation and has an official website at `https://fsharp.org/`.

### Influences
F# was heavily influenced by the functional languages ML and OCaml, as well as the general-purpose language Python. In turn, F# has influenced the development of other languages, including F*, Elm, and LiveScript. It is distinct from the "F" programming language.

## Schema Markup
```json
{
  "@context": "https://schema.org",
  "@type": "Thing",
  "name": "F#",
  "description": "Microsoft multi-paradigm programming language emphasizing functional programming.",
  "url": "https://fsharp.org/",
  "sameAs": [
    "https://en.wikipedia.org/wiki/F_Sharp_(programming_language)",
    "https://github.com/dotnet/fsharp"
  ],
  "additionalType": "http://www.wikidata.org/entity/Q2370"
}

## References

1. [Release 3.1.1. 2013](https://github.com/fsharp/fsharp/releases/tag/3.1.1)
2. [Source](https://github.com/fsharp/fsharp/releases)
3. [Release 4.0.1.20. 2016](https://github.com/fsharp/fsharp/releases/tag/4.0.1.20)
4. [Release 3.1.1.0. 2014](https://github.com/fsharp/fsharp/releases/tag/3.1.1.0)
5. [Release 3.1.1.1. 2014](https://github.com/fsharp/fsharp/releases/tag/3.1.1.1)
6. [Release 3.1.1.2. 2014](https://github.com/fsharp/fsharp/releases/tag/3.1.1.2)
7. [Release 3.1.1.3. 2014](https://github.com/fsharp/fsharp/releases/tag/3.1.1.3)
8. [Release 3.1.1.4. 2014](https://github.com/fsharp/fsharp/releases/tag/3.1.1.4)
9. [Release 3.1.1.5. 2014](https://github.com/fsharp/fsharp/releases/tag/3.1.1.5)
10. [Release 3.1.1.6. 2014](https://github.com/fsharp/fsharp/releases/tag/3.1.1.6)
11. [Release 3.1.1.7. 2014](https://github.com/fsharp/fsharp/releases/tag/3.1.1.7)
12. [Release 3.1.1.8. 2014](https://github.com/fsharp/fsharp/releases/tag/3.1.1.8)
13. [Release 3.1.1.9. 2014](https://github.com/fsharp/fsharp/releases/tag/3.1.1.9)
14. [Release 3.1.1.10. 2014](https://github.com/fsharp/fsharp/releases/tag/3.1.1.10)
15. [Release 3.1.1.11. 2014](https://github.com/fsharp/fsharp/releases/tag/3.1.1.11)
16. [Release 3.1.1.12. 2014](https://github.com/fsharp/fsharp/releases/tag/3.1.1.12)
17. [Release 3.1.1.13. 2014](https://github.com/fsharp/fsharp/releases/tag/3.1.1.13)
18. [Release 3.1.1.14. 2014](https://github.com/fsharp/fsharp/releases/tag/3.1.1.14)
19. [Release 3.1.1.15. 2014](https://github.com/fsharp/fsharp/releases/tag/3.1.1.15)
20. [Release 3.1.1.16. 2014](https://github.com/fsharp/fsharp/releases/tag/3.1.1.16)
21. [Release 3.1.1.17. 2014](https://github.com/fsharp/fsharp/releases/tag/3.1.1.17)
22. [Release 3.1.1.18. 2014](https://github.com/fsharp/fsharp/releases/tag/3.1.1.18)
23. [Release 3.1.1.19. 2014](https://github.com/fsharp/fsharp/releases/tag/3.1.1.19)
24. [Release 3.1.1.20. 2014](https://github.com/fsharp/fsharp/releases/tag/3.1.1.20)
25. [Release 3.1.1.21. 2014](https://github.com/fsharp/fsharp/releases/tag/3.1.1.21)
26. [Release 3.1.1.22. 2014](https://github.com/fsharp/fsharp/releases/tag/3.1.1.22)
27. [Release 3.1.1.23. 2014](https://github.com/fsharp/fsharp/releases/tag/3.1.1.23)
28. [Release 3.1.1.24. 2014](https://github.com/fsharp/fsharp/releases/tag/3.1.1.24)
29. [Release 3.1.1.25. 2014](https://github.com/fsharp/fsharp/releases/tag/3.1.1.25)
30. [Release 3.1.1.26. 2014](https://github.com/fsharp/fsharp/releases/tag/3.1.1.26)
31. [Release 3.1.1.27. 2014](https://github.com/fsharp/fsharp/releases/tag/3.1.1.27)
32. [Release 3.1.1.28. 2014](https://github.com/fsharp/fsharp/releases/tag/3.1.1.28)
33. [Release 3.1.1.29. 2014](https://github.com/fsharp/fsharp/releases/tag/3.1.1.29)
34. [Release 3.1.1.30. 2014](https://github.com/fsharp/fsharp/releases/tag/3.1.1.30)
35. [Release 3.1.1.31. 2014](https://github.com/fsharp/fsharp/releases/tag/3.1.1.31)
36. [Release 3.1.1.32. 2015](https://github.com/fsharp/fsharp/releases/tag/3.1.1.32)
37. [Release 3.1.2.2. 2015](https://github.com/fsharp/fsharp/releases/tag/3.1.2.2)
38. [Release 3.1.2.3. 2015](https://github.com/fsharp/fsharp/releases/tag/3.1.2.3)
39. [Release 3.1.2.4. 2015](https://github.com/fsharp/fsharp/releases/tag/3.1.2.4)
40. [Release 3.1.2.5. 2015](https://github.com/fsharp/fsharp/releases/tag/3.1.2.5)
41. [Release 4.0.0.1. 2015](https://github.com/fsharp/fsharp/releases/tag/4.0.0.1)
42. [Release 4.0.0.2. 2015](https://github.com/fsharp/fsharp/releases/tag/4.0.0.2)
43. [Release 4.0.0.3. 2015](https://github.com/fsharp/fsharp/releases/tag/4.0.0.3)
44. [Release 4.0.0.4. 2015](https://github.com/fsharp/fsharp/releases/tag/4.0.0.4)
45. [Release 4.0.1.0. 2015](https://github.com/fsharp/fsharp/releases/tag/4.0.1.0)
46. [Release 4.0.1.1. 2015](https://github.com/fsharp/fsharp/releases/tag/4.0.1.1)
47. [Release 4.0.1.2. 2016](https://github.com/fsharp/fsharp/releases/tag/4.0.1.2)
48. [Release 4.0.1.3. 2016](https://github.com/fsharp/fsharp/releases/tag/4.0.1.3)
49. [Release 4.0.1.4. 2016](https://github.com/fsharp/fsharp/releases/tag/4.0.1.4)
50. [Release 4.0.1.5. 2016](https://github.com/fsharp/fsharp/releases/tag/4.0.1.5)