Last Updated on November 23, 2023
F# (pronounced F sharp) is a general purpose, strongly typed, multi-paradigm programming language that encompasses functional, imperative, and object-oriented programming methods. F# was modeled on Objective Caml (OCaml), a successful object-oriented functional programming language, and then tweaked and extended to mesh well technically and philosophically with .NET.
F# is most often used as a cross-platform Common Language Infrastructure (CLI) language, but it can also generate JavaScript and graphics processing unit (GPU) code.
F# belongs to the ML family of languages and is ideal for implementing interpreters and compilers because it has datatypes and pattern matching and is strongly typed. This leads to a brevity and clarity of examples that cannot be matched by non-functional languages.
F# is valuable to programmers at any skill level; it combines many of the best features of functional and object-oriented programming styles into a uniquely productive language.
Here’s our recommended tutorials to learn F#. If you’re looking for reading material that’s more substantial, check out our recommended free F# books.
1. The “Thinking functionally” series by fsharpforfunandprofit.com
This series of posts will introduce you to the fundamentals of functional programming – what does it really mean to “program functionally”, and how this approach differs from object oriented or imperative programming.
2. F# For Beginners by Sacha
A collection of blog posts offering a good introduction to the language.
3. F# Tutorial by Derek Banas
This teaches the core syntax of the F# language. Topics cover functions, math, strings, looping, while, for interating, conditionals, and much more.
4. F# Cheatsheet by Anh-Dung Phan
This cheatsheet glances over some of the common syntax of F# 3.0.
5. Functional Koans – F# by Chris Marinos
Inspired by EdgeCase’s fantastic Ruby koans, the goal of the F# koans is to teach you F# through testing.
When you first run the koans, you’ll be presented with a runtime error and a stack trace indicating where the error occured. Your goal is to make the error go away. As you fix each error, you should learn something about the F# language and functional programming in general.
All tutorials in this series:
| Free Programming Tutorials | |
|---|---|
| ABAP | Advanced Business Application Programming |
| Ada | ALGOL-like programming language, extended from Pascal and others |
| Agda | Dependently typed functional language based on intuitionistic type theory |
| Alice | Educational language with an integrated development environment |
| Arduino | Inexpensive, flexible, open source microcontroller platform |
| Assembly | As close to writing machine code without writing in pure hexadecimal |
| Awk | Versatile language designed for pattern scanning and processing |
| Bash | ‘Bourne-Again-SHell’ is both a shell and programming language |
| BASIC | Family of general-purpose, high-level programming languages |
| C | General-purpose, procedural, portable, high-level language |
| C++ | General-purpose, portable, free-form, multi-paradigm language |
| C# | Combines the power and flexibility of C++ with the simplicity of Visual Basic |
| Chapel | Parallel-programming language in development at Cray Inc. |
| Clojure | Dialect of the Lisp programming language |
| ClojureScript | Compiler for Clojure that targets JavaScript |
| COBOL | Common Business-Oriented Language |
| CoffeeScript | A very succinct programming language that transcompiles into JavaScript |
| Coq | Dependently typed language similar to Agda, Idris, F*, Lean, and others |
| Crystal | General-purpose, concurrent, multi-paradigm, object-oriented language |
| CSS | CSS (Cascading Style Sheets) specifies a web page’s appearance |
| D | General-purpose systems programming language with a C-like syntax |
| Dart | Client-optimized programming language for fast apps |
| Dylan | Multi-paradigm language, supports functional & object-oriented programming |
| ECMAScript | Best known as the language embedded in web browsers |
| Eiffel | Object-oriented language |
| Elixir | Relatively new functional language that runs on the Erlang virtual machine |
| Elm | Functional language that compiles to JavaScript |
| Emacs Lisp | A dialect of the Lisp programming language. |
| Erlang | General-purpose, concurrent, declarative, functional language |
| F# | General purpose, strongly typed, multi-paradigm language. Part of ML |
| Factor | Dynamic stack-based language |
| Forth | Imperative stack-based programming language |
| Fortran | The first high-level language, using the first compiler |
| GDScript | Godot’s built-in language for scripting and interacting with nodes |
| Go | Compiled, statically typed programming language |
| Groovy | Powerful, optionally typed and dynamic language |
| Hack | For the HipHop Virtual Machine (HHVM), created as a dialect of PHP |
| Haml | HTML Abstraction Markup Language |
| Haskell | Standardized, general-purpose, polymorphically, statically typed language |
| HTML | HyperText Markup Language |
| Icon | High-level, general-purpose language |
| Imba | Full-stack language that compiles to performant JavaScript |
| J | Array programming language based primarily on APL |
| Java | General-purpose, concurrent, class-based, object-oriented, high-level language |
| JavaScript | Interpreted, prototype-based, scripting language |
| Julia | High-level, high-performance language for technical computing |
| Kotlin | Statically typed, general-purpose programming language with type inference |
| LabVIEW | Designed to enable domain experts to build power systems quickly |
| LaTeX | Professional document preparation system and document markup language |
| Less | Backwards-compatible language extension for Cascading Style Sheets |
| Limbo | Designed for applications running distributed systems on small computers |
| Lisp | Unique features - excellent to study programming constructs |
| Logo | Dialect of Lisp that features interactivity, modularity, extensibility |
| Lua | Designed as an embeddable scripting language |
| Markdown | Plain text formatting syntax designed to be easy-to-read and easy-to-write |
| MoonScript | Dynamic scripting programmer friendly language that compiles into Lua |
| Nim | Statically typed compiled systems language with syntax resembling Python |
| Objective-C | General purpose language which is a superset of C |
| OCaml | General-purpose, powerful, high-level language |
| Octave | High-level language, primarily intended for numerical computations |
| OpenCL | Open Computing Language |
| Pascal | Imperative and procedural language designed in the late 1960s |
| Perl | High-level, general-purpose, interpreted, scripting, dynamic language |
| Pike | Interpreted, general-purpose, high-level, cross-platform, dynamic language |
| PHP | PHP has been at the helm of the web for many years |
| Pony | Pony is an actor-model, capabilities-secure, high-performance language |
| PostScript | Page description language in electronic and desktop publishing |
| Prolog | General purpose, declarative, logic programming language |
| PureScript | Small strongly, statically typed language with expressive types |
| Python | General-purpose, structured, powerful language |
| QML | Hierarchical declarative language for user interface layout with a syntax to JSON |
| R | De facto standard among statisticians and data analysts |
| Racket | Platform for programming language design and implementation |
| Raku | Member of the Perl family of programming languages |
| Roff | Extensible text formatting language and a set of programs for printing |
| Ruby | General purpose, scripting, structured, flexible, fully object-oriented language |
| Rust | Ideal for systems, embedded, and other performance critical code |
| Scala | Modern, object-functional, multi-paradigm, Java-based language |
| Scheme | General-purpose, functional, language descended from Lisp and Algol |
| Scratch | Visual programming language designed for 8-16 year-old children |
| Solidity | Object-oriented, high-level language for implementing smart contracts |
| SQL | Access and manipulate data held in a relational database management system |
| Standard ML | One of the two main dialects of the ML language |
| Swift | Powerful and intuitive general-purpose programming language |
| Tcl | Dynamic language based on concepts of Lisp, C, and Unix shells |
| TypeScript | Strict syntactical superset of JavaScript, adding optional static typing |
| V | Statically typed compiled language to build maintainable software |
| Vala | Object-oriented language with a self-hosting compiler that generates C code |
| VHDL | Very High Speed Integrated Circuit Hardware Description Language |
| VimL | Powerful scripting language of the Vim editor |
| XML | Set of rules for defining semantic tags that describe the structure and meaning |
| Zig | General-purpose programming language and toolchain |