Functional programming is a style of programming that is focused on evaluating expressions rather than executing statements (or commands). This somewhat subtle difference has a huge impact on the way programs are written.
- Expressivity. Functional languages make it often easier to express more complicated algorithms or business rules in a more succinct and expressive way.
- Succinctness. This means that larger part of code actually describes the specific problem we’re trying to solve and the amount of boilerplate or “syntactic noise” is minimal.
- Clarity. Functional code is easier to reason about and easier to test. When writing program as an expression that is evaluated, we only need to test whether the result of the expression is correct.
Functional language features have been gradually implemented in many main-stream languages and technologies. For example, C# 3.0 and the LINQ project vere largely inspired by the functional paradigm. More recently, Microsoft Visual Studio 2010 comes with a fully supported functional programming language Visual F#, which makes it possible to start using fully supported functional language in production.
We believe that there is always a space for improvement and so our members actively participate in the academic community and contribute to the ideas of functional programming. This helps us to provide cutting edge technological information and also develop better solutions that are technologically sound. Some of the recent academic work that was co-authored by our experts include:
- Joinads: a retargetable control-flow construct for reactive, parallel and concurrent programming (Tomas Petricek and Don Syme)
Reactive, parallel and concurrent programming models are often difficult to encode in general-purpose programming languages. We present a lightweight language extension (based on ML-style pattern matching) that can be used for encoding a wide range of these models. We study the extension formally as an abstract class of computations called joinads.
- The F# Asynchronous Programming Model (Don Syme, Tomas Petricek and Dmitry Lomov)
We describe the asynchronous programming model in F#, and its applications to reactive, parallel and concurrent programming. The key feature combines a core language with a non-blocking modality to author lightweight asynchronous tasks, where the modality has control flow constructs that are syntactically a superset of the core language and are given an asynchronous semantic interpretation. This allows smooth transitions between synchronous and asynchronous code and eliminates callback-style treatments of inversion of control, without disturbing the foundation of CPU-intensive programming that allows F# to interoperate smoothly and compile efficiently to .NET and native code.
- Collecting Hollywood’s Garbage: Avoiding Space-Leaks in Composite Events (Tomas Petricek and Don Syme)
The article deals with memory leaks that can occur in a reactive programming model based on events. It presents a formal garbage collection algorithm that could be used in this scenario and a correct reactive library based on this idea, implemented in F#.
Share this page
- Phalanger 3.0 updates for March 2013 March 6, 2013After several months of development, contributions from opensource community and collaboration with big commercial users, Phalanger is getting bigger. Today we’ve released package of Phalanger, containing many new extensions and latest integration for Visual Studio. New goodies in Phalanger Mainly … Continue reading → […]
- Announcing WP.NET May 23, 2012Phalanger was capable of compiling WordPress for quite a long time, but this support was always targeted at developer audience. Experienced developers could compile WordPress and run it on their servers. However, we noticed that the combination is interesting not only to developers, … Continue reading → […]