Today I am looking into functional programming. More specifically I’ll look into F#, a strongly typed, multi-paradigm language. Often used as a cross-platform common language infrastructure language.
It is developed by F# Software Foundation, Microsoft and open contributors. It is supported in Visual Studio and Xamarin Studio, and it has its own open source, cross-platform compiler.
F# was originally designed and implemented by Don Syme, from Microsoft Research, and it was first released in 2005, supporting .NET 1.0 – 3.5, and the Windows platform. Features included functional programming, records, tuples, pattern matching, structs, scripting files, modules and .NET interoperability, to mention a few.
It took about 5 years until the next version was released. This did support Linux and OS X as well, and .NET 2.0 – 4.0 as well as Mono. New features was added, such as asynchronous programming, agent programming, extension members, named arguments and array slicing.
The latest version is F# 4.0, released earlier this year, with the introduction of Visual Studio 2015. Some of the features included is extension property initializers, class names as functions, non-null provided types and optional type args.
Another place it is used is for analytical programming. It has been positioned as an optimized alternative to C#, and is used for quantitative finance programming, energy trading and portfolio optimization, machine learning and business intelligence.
Example Hello World
So for this example you will need a compiler for F#, naturally. There are a few ways to compile code on Windows (5 actually), which you can read about on fsharp.org.
Assuming you have everything you need to compile some code, lets create a file called HelloWorld.fs. The code should look something like this:
open System  let main argv = printfn “Hello, World!” 0
A big warning here! Do not let there be TABs, unless you specify an “#indent “off”” option. My first attempt to compile the code above, with TABs failed. When I removed the TABs and just used whitespace, it compiled fine.
Anyway, compile this file by running the following:
And given that the compilation succeeded, run the program by running:
If everything has been done as it should, you should see the all familiar “Hello, World!” printed to the console.
Although I haven’t spent too much time on F#, I imagine I’ll spend some time diving into it sometime next year. It is compatible with many Microsoft products, uses .NET framework, and is being used for machine learning, a topic I’m interested in learning more on later.
That’s it for now, be sure to check back tomorrow for the next part!