Functional languages

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.

Devsense experts can help you understand functional programming by providing trainings and see its value for your business. We also offer consulting help for your projects.

Research

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

RSS php-compiler.net

  • WordPress on .NET with SQL Server is Possimpible using Phalanger 3.0 January 23, 2012
    In a recent scenario I wanted to run WordPress as a subdirectory of a .NET application. I also wanted to avoid installing PHP and MySql on the Windows server. Impossible? Apparently not! (I’ll get to the word Possimpible a bit … Continue reading → […]
  • Phalanger riding Mono January 17, 2012
    Phalanger is a complete reimplementation of PHP, written in the C# language. It was always being developed with the Mono platform in mind. This means you can compile and run PHP application on Linux web servers using Mono. Since Phalanger 3.0, … Continue reading → […]