How to design programs in Racket

Annual review

Almost exactly a year ago we started the “Functional Programming” blog. Together with some guest authors, the companies Active Group and Factis Research report on aspects of functional programming that are important for our working life.

In this anniversary article, we would like to give a brief résumé and an overview of the articles from the past year. Hopefully you will find one or the other article that is interesting for you and that has "slipped through your fingers" over the course of the year.

At the end of the article you will also find some interesting figures about the blog and its visitors. We would like to take this opportunity to thank you, our many readers, and ask for your feedback.

  • What do you like about this blog?
  • What can still be improved?
  • What would you like to know more about?

Simply write the answers to these questions in a short comment at the end of the article. Thanks! But now have fun reading this overview.

In our archive you will already find a chronological overview of all articles on the blog, optionally also sorted by author. At this point I would like to classify the articles of the past year in terms of content.

Basics of functional programming

We have a few articles aimed at beginners in functional programming. In his article, David Frese gives an answer to the question What is functional programming? Michael Sperber presents a three-part introduction to the purely functional programming with many examples, here you will find the 2nd and 3rd part.

Java and languages ​​on the JVM

Many industrial software developers are familiar with object-oriented programming in Java and the JVM as an execution platform. You can also program functionally on this platform! In an article you can see, using a concrete example from the source code of the Apache Ant build system, how Java code can be written in the functional JVM language Scala in a much more readable manner. Andreas Bernauer shows, also in Scala, how one can program clearly and efficiently in this language. In an example from practice we show how with the help of functional programming a beautiful, understandable and clean API for JasperReports, a well-known library from the Java world for generating reports, can be created.

In addition to Scala, there are a number of other functional languages ​​for the JVM. An article introduces the Clojure language and shows how you can easily develop small special languages ​​there. Our guest author Ingo Wechsung introduces the language Frege, a Haskell dialect for the JVM.

Functional in imperative languages

Even if you do not have the opportunity to use functional languages ​​in your daily work, you can benefit from functional thinking and programming techniques in imperative and object-oriented languages, as Stefan Wehr in his article Why functional? shows. Java 8 also contains some long overdue functional features. Niklas Baumstark demonstrates that you can benefit from functional programming even in C ++ thanks to persistent data structures.

Immutable data types are an important technique of functional programming, so important that we don't want to do without them in Objective-C either. But if you ever feel the need to code imperatively in the functional language of Haskell, this article by our guest author Joachim Breitner will definitely help you.

Industrial applications

Functional programming is also increasingly used in industrial applications. Two articles show how we were able to implement a web project for electronic estate management quickly and cost-effectively with functional programming. Medical data processing can also be implemented excellently with functional programming.

But not only our companies rely on functional programming. Banks such as Credit Suisse and Standard Chartered or internet giants such as Twitter and Facebook are now using this technology. Find out why Facebook uses the functional language Haskell in this article.

Testing

Although we repeatedly report here in this blog about the advantages of functional programming in terms of software quality and low error rates, it goes without saying that you have to test in functional projects. In this blog we dealt with randomized tests in the sense of QuickCheck. In another article, we also present a test framework for Haskell, which is used every day in our work.

Web programming

Of course, this blog also pays tribute to web programming. On the one hand, Alexander Thiemann presents techniques for modern web applications with Haskell in an article and deepens them in a second part. On the other hand, another article discusses first steps in ClojureScript and deals mainly with web programming. The Curry book, which we will be presenting in a book review, shows that you can also functionally program in JavaScript, the lingua franca of the web (albeit with certain restrictions).

Parallelism and concurrency

Functional programming languages ​​are particularly suitable for parallel and concurrent programming. This is due in particular to the economical and disciplined handling of side effects as well as the explicit data flow via function parameters instead of global variables. An article on this topic explains how one can introduce parallelism in Haskell and still keep the programs deterministic. Another article demonstrates that with Haskell you can naturally write concurrent programs that are superior to the popular node.js framework in terms of performance and software.

Useful examples

In another practical example, our guest author Johannes Weiß explains how easy the interaction between Haskell and calling C library functions can be. In addition, another article demonstrates the use of Haskell to implement a build system that compiles our software every day. The pros and cons for the Eclipse Xtend platform are also examined from a practical point of view.

Monads

No blog about functional programming languages ​​without monads! Our guest author Uwe Schmidt brings readers closer to the functionality and advantages of fashions in a three-part, didactically excellently prepared article series (Part 1, Part 2, Part 3). Practical uses of monads are also presented in an article about a monad for GUI programming. Our guest author Torsten Grust also shows how one can represent database queries with the help of monads.

Functional programming classic

In addition to monads, there are a number of other classics of functional programming: Tail calls, also known as end recursion, serve as a powerful alternative to loops in functional language. The article on loops in Scala takes a similar notch. Continuations allow access to the "continuation" of a program and thus open up undreamt-of possibilities. With the help of parser combiners, parsers for text formats can be implemented very easily, as shown using a parser for HL7 messages. Another article shows how to write extensible programs in functional languages.

Events

In the past year, too, there were a large number of events with the topic of “functional programming”. We have only reported a fraction of these events on this blog, and those in which we have participated ourselves. There is an article about the Zurich FP Afternoon / Haskell Hackathon, which took place in Zurich in September 2013. There is a preliminary report and a review for the "Commercial Users of Functional Programming" workshop. The videos linked in the review demonstrate the advantages and the wide range of possible uses of functional programming very well.

A few numbers about the blog

Eleven authors, including five guest authors, wrote a total of 43 articles for this blog in the past year. Each article had more than 70 readers, half of the articles even more than 235 readers. The top 3 articles even had more than 1,000 readers each. The top 3 articles are (in this order): Monads: The programmable semicolon, Haskell suggests node.js and functional programming using a specific example.

In total, over 8,000 people read the “Functional Programmers” blog last year, with more than 23,000 page views. We have 30-40 visitors per day, on days when articles are published there are at least 60 visitors, but often 80-120 visitors. (The number of visitors always denotes unambiguous Visitors, multiple calls from the same person are only counted once.)

We would like to take this opportunity to thank you, our readers, very much for your loyalty. We hope that you will continue to read our blog in the future and find the content interesting. At this point, we would like to ask for your feedback so that we can tailor our articles even better to your interests.

  • What do you like about this blog?
  • What can still be improved?
  • What would you like to know more about?

Simply write the answers to these questions in a short comment. Thanks!


About the author:

Dr. Stefan Wehr designs and develops complex applications for Checkpad in both classic and functional languages. He is an internationally recognized specialist in functional programming.