F# is a succinct, expressive and efficient functional and object-oriented language for .NET which helps you write simple code to solve complex problems.
F# is an open source, functional-first programming language which empowers users and organizations to tackle complex computing problems with simple, maintainable and robust code. It is used in a wide range of application areas and is available across multiple platforms.
F# runs on Linux, Mac OS X, Windows as well as HTML5 and GPUs. F# is free to use and has an OSI-approved open-source license. F# is supported by industry leading companies providing professional tools, and by an active open source community.
- The F# Software Foundation promotes and advances the F# language and supports the F# community
- F# slack has an active community for F# questions and other topics of interest
- To contribute visit the F# GitHub Organization and join the F# Open Source mailing list.
- Microsoft Visual F# provides professional Visual Studio tooling for F#
- TryF# provides interactive web-based tutorials that introduce F#
The Learning F# page provides information about tutorials and books. To install and run F# on various platforms including Windows, Linux, Mac, HTML5 and others, visit the Using F# page. For more information, see also Getting Started with F#.
Formal F# language specifications can be found on the F# Software Foundation website:
For idiomatic coding conventions and styles, please read F# Component Design Guidelines.
To search for F# operators such as "?" (dynamic operator) in StackOverflow, you can use http://symbolhound.com/.
Free F# Programming Resources
- F Sharp Programming in Wikibooks
- Real World Functional Programming (MSDN Chapters)
- FSharp for Fun and Profit an excellent on-line resource
- Visual F# Development Portal
Rosetta Code
If you are familiar with another programming language such as Java or C# and want to leverage that knowledge to understand how to do the same in a different language then Rosetta Code list many common programming tasks and the solutions in many different programming languages. Most task are done for F# but not all.
Lambda Calculus
Since F# is based on functional programming and functional programming is based on lambda calculus.
An Introduction To Functional Programming Through Lambda Calculus by Greg Michaelson
Functional Programming
Introduction to Functional Programming by John Harrison
The code is ML, but F# started from ML and the ML in the book can easily be converted to F#.
The Conception, Evolution, and Application of Functional Programming Languages by Paul Hudak Introduces many concepts of functional programming not found in imperative programming.
Chat Room
Stack Overflow F# Tutorial
- Data structures and collections
- List
- Sequence
- Array
- List comprehension
- Tuples and records
- Accessing a specific member in a F# tuple
- F#. Tuple or not
- F# Records: Dangerous, only for limited use, or well used functionality?
- F# record member evaluation
- Discriminated unions
- Enumeration
- Pattern matching
- Recursion
- Mutually recursive functions/types
- Tail recursion
- Type inference
- Type handling
- Error handling
- Namespaces and modules
- Classes and inheritance
- Active patterns
- Units of measure
- Generic numbers
- Computation expressions
- Why do F# computation expressions require a builder object (rather than a class)?
- How to implement delay in the maybe computation builder?
- F# Computation Expressions: How to use `for` to return a `seq`?
- Defining new keywords in F#'s computation expression
- How do I change the Rx Builder implementation to fix the stack overflow exception?
- Asynchronous workflows
- Task Parallel Library vs Async Workflows
- Understanding F# Asynchronous Programming
- Why shouldn't I use F# asynchronous workflows for parallelism?
- Best practices to parallelize using async workflow
- F# Interactive
- F# interactive - how to see all the variables defined in current session
- Out of memory exception for a matrix
- fsx script referencing a dll referencing many dll
- F# - Keep F# interactive from posting output
- Performance optimization
- Why is this F# code so slow?
- FSharp runs my algorithm slower than Python
- F# seems slower than other languages... what can I do to speed it up?
- Why is using a sequence so much slower than using a list in this example
- Use of `inline` in F#
- F# vs. C#
- Best approach for designing F# libraries for use from both F# and C#
- What task is best done in a functional programming style?
- C# / F# Performance comparison
- F# and other functional programming languages
- F# changes to OCaml
- Object-oriented programming in a purely functional programming context?
- How would I translate a Haskell type class into F#?