# dotnet/fsharp

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/dotnet-fsharp).**

4,308 stars · 865 forks · F# · MIT

## Links

- GitHub: https://github.com/dotnet/fsharp
- awesome-repositories: https://awesome-repositories.com/repository/dotnet-fsharp.md

## Description

F# is a strongly typed, functional programming language and compiler for the .NET ecosystem. It transforms functional source code into Common Intermediate Language for execution on the .NET runtime and provides a foundational core library of primitive types and functions.

The language emphasizes immutability and uses a static, constraint-based type inference system to automatically determine variable types without requiring explicit user annotations. It also functions as a Language Server Protocol provider, exposing compiler logic through a service-based API to deliver real-time code analysis and intelligence to editors and IDEs.

The project covers the development of compiler infrastructure, the maintenance of the core language runtime, and the creation of tools for .NET application development.

## Tags

### Programming Languages & Runtimes

- [Functional Programming Compilers](https://awesome-repositories.com/f/programming-languages-runtimes/functional-programming-compilers.md) — Implements a full-scale compiler that transforms functional source code into Common Intermediate Language for the .NET runtime.
- [Source Code Compilers](https://awesome-repositories.com/f/programming-languages-runtimes/source-code-compilers.md) — Transforms functional source code into executable programs using a compiler and core library infrastructure. ([source](https://cdn.jsdelivr.net/gh/dotnet/fsharp@main/README.md))
- [Automatic Type Inferences](https://awesome-repositories.com/f/programming-languages-runtimes/automatic-type-inferences.md) — Determines variable types automatically using a constraint-based system without requiring explicit type annotations.
- [CIL Code Generation](https://awesome-repositories.com/f/programming-languages-runtimes/cil-code-generation.md) — Implements the translation of functional source code into Common Intermediate Language for execution on the .NET runtime.
- [Common Intermediate Languages](https://awesome-repositories.com/f/programming-languages-runtimes/common-intermediate-languages.md) — Compiles high-level constructs into a platform-neutral instruction set for execution on the .NET runtime.
- [Compiler APIs](https://awesome-repositories.com/f/programming-languages-runtimes/compiler-interpreter-internals/compiler-infrastructure/compiler-apis.md) — Exposes internal compiler logic as a set of queryable services for providing real-time IDE intelligence.
- [Core Language Libraries](https://awesome-repositories.com/f/programming-languages-runtimes/core-language-libraries.md) — Links the language compiler to a foundational set of primitive types and functions required for execution.
- [Language Implementations](https://awesome-repositories.com/f/programming-languages-runtimes/functional-programming-frameworks/language-implementations.md) — Provides a strongly typed, functional programming language emphasizing immutability and type inference.
- [Functional Programming Languages](https://awesome-repositories.com/f/programming-languages-runtimes/functional-programming-languages.md) — Provides a strongly typed language based on the functional paradigm with an emphasis on immutability and type inference.
- [Constraint-Based Inference](https://awesome-repositories.com/f/programming-languages-runtimes/generic-types/type-constraint-mapping/constraint-based-inference.md) — Determines variable types automatically by solving a system of constraints without requiring explicit user annotations.
- [.NET Runtimes](https://awesome-repositories.com/f/programming-languages-runtimes/net-runtimes.md) — Enables the creation of cross-platform programs that run on the .NET runtime using a strongly typed language.
- [Static Type Inference](https://awesome-repositories.com/f/programming-languages-runtimes/static-type-inference.md) — Employs a constraint-based static type inference system to automatically determine variable types without requiring explicit user annotations.
- [Compiler Infrastructure](https://awesome-repositories.com/f/programming-languages-runtimes/compiler-interpreter-internals/compiler-infrastructure.md) — Provides the infrastructure for transforming source code into executable binaries and optimizing the compilation pipeline.
- [Multi-Pass Compiler Pipelines](https://awesome-repositories.com/f/programming-languages-runtimes/multi-pass-compiler-pipelines.md) — Transforms source code through sequential phases of parsing, type checking, and intermediate language generation.

### Part of an Awesome List

- [Core .NET Libraries](https://awesome-repositories.com/f/awesome-lists/devtools/core-net-libraries.md) — Provides a foundational set of primitive types and functions required to execute programs within the .NET ecosystem.
- [Core Frameworks](https://awesome-repositories.com/f/awesome-lists/devtools/core-frameworks.md) — Functional-first language implementation and compiler tools.
- [Language Core](https://awesome-repositories.com/f/awesome-lists/devtools/language-core.md) — Primary language repository and compiler.

### Development Tools & Productivity

- [Editor Tooling](https://awesome-repositories.com/f/development-tools-productivity/code-editors-ides/extension-ecosystems-management/editor-extensions/editor-tooling.md) — Exposes compiler services to editors and IDEs to provide real-time code analysis and intelligence. ([source](https://cdn.jsdelivr.net/gh/dotnet/fsharp@main/README.md))
- [Language Server Protocols](https://awesome-repositories.com/f/development-tools-productivity/platforms-runtimes-language-services/language-server-protocols.md) — Functions as a language server to deliver real-time code analysis and intelligence to editors and IDEs.
- [Language Intelligence Services](https://awesome-repositories.com/f/development-tools-productivity/platforms-runtimes-language-services/language-server-protocols/language-intelligence-services.md) — Provides editors with real-time code analysis, autocomplete, and type checking through a service-based compiler API.

### Software Engineering & Architecture

- [Immutable Data Management](https://awesome-repositories.com/f/software-engineering-architecture/immutable-data-management.md) — Prioritizes non-changing data structures by default to ensure thread safety and predictable state transitions.
