Shiva Srivastava
David He
Peter Bingel
• F# (pronounced "F sharp") is a functional and object oriented
programming language for the Microsoft .NET platform
• A strength of F# is its setting within .NET
• The core language is similar to that of the Objective Caml language:
both are members of the ML programming language family.
• Like the Scala programming language, it implements a functional
programming language on top of a platform originally designed for
object-oriented programming paradigm.
• The F# environment includes the ability to run interactive sessions,
allowing users to run pieces of code at will, collecting and analyzing
the results without having to compile whole programs.
Problem Domain
• The F# programming language has many applications ranging from
scripting to cross-platform application development
• Ideal platform for scientific computing, filling the gap between lowlevel but high-performance numerical languages like Fortran and
high-level but slow languages like Mathematica
• Can be spawned from interactive sessions, giving F# the essential
functionality of many expensive technical computing environments.
F# was initially developed by Microsoft Research, but now is being
developed by Microsoft developer division after it was announced on
October 17, 2007 that F# will be productized as a fully integrated language
in Visual Studio[1]. The latest released version,, was released on
July 31, 2007.
F# is derived from a series of different imperative and functional languages
as are most modern languages (including Java and C).
At the heart of F# lies Objective Caml, or OCaml, and the .NET language
So, let's leave it at this: F# is, in essence, another dialect, or "manifestation"
as Microsoft calls it, of a functional ML-like language mixed with the power
of C#.
Language Concepts
• interactive scripting like Python
• the foundations for an interactive data visualization environment like
• the strong type inference and safety of ML
• easy access to the entire range of powerful .NET libraries and
database tools
• The only language that is scripted/ functional /imperative/ objectoriented
Defining Variables
let x = 3 + (4 * 5)
let res = (if x = 23 then "correct" else "incorrect")
Hello World Program
• let x = "Hello World";;
Interesting features
F# includes support for the foundational features of functional programming including tuples, lists,
options, function values, local function definitions, pattern matching and sequence expressions.
The powerful type inference mechanisms of F# allow code to be both succinct and yet fully typechecked.
F# also includes support for advanced functional programming constructs such as active patterns
and computation expressions. Computation expressions can be used to express data queries and
client/server modalities in AJAX-style web programming. They enable programmers to write
succinct and robust reactive agents through the use of asynchronous workflows. Computation
expressions are related to ``monads'' in Haskell.
F# embraces object-oriented programming and includes support for type-inferred, succinct
descriptions of object types.
F# allows types and values in an F# program to be accessed from other .NET languages in a
predictable and friendly way.
F# includes support for a form of meta-programming, inspired by LINQ. This allows data queries
to be expressed and type-checked in F# code and then dynamically compiled and translated to
target languages such as SQL using the LinqToSql framework.
F# fully supports .NET generics and the language was designed partly with this in mind.
Through .NET, F# supports advanced language and runtime features such as Unicode strings,
dynamic linking, preemptive multithreading, and SMP support.
Comparison with OCML
Some identifiers are now keywords.
Some operator names are used for quotations.
<@ some string @>
There are some minor parsing differences.
null, inline
Two top-level definitions with the same name are not allowed within a module
or a module type.
let x = 1
let x = 3
F# Vs OCml
Similarities To Other Languages
• interactive scripting like Python,
• the foundations for an interactive data
visualization environment like MATLAB,
• the strong type inference and safety of ML,
• a performance profile like that of C#,
• a foundational simplicity with similar roots
to Scheme,

F# - Computer Science & Engineering