Table of Contents
How Haskell Became the Standard for Functional Programming
Functional programming is based on ideas from combinatorial logic and lambda calculus. The language fundamentals were developed by mathematicians Moses Schönfinkel (Germany and Russia), Haskell Curry (England), and Alonzo Church (USA) in the 1920s and 1930s.
Upon these theories, John McCarthy developed Lisp (1958), which became the first near-functional programming language and had no analogs for many years. The functional programming languages such as APL (1964) and ISWIM (1966) were not as widely used. Over time, Lisp stopped meeting some of the needs of software developers, especially as the size and complexity of program code grew. Because of this, strongly typed models for functional languages were intensively developed in the late 70s and early 80s. Most of them supported such powerful mechanisms as data abstraction and polymorphism. Many typed functional languages like ML, Scheme, Hope, Miranda, Clean, and others were invented within that period. However, as almost every group of functional programmers used its own language, it prevented the further spread of these languages and caused numerous problems.
The history of the Haskell language began in 1987. After Miranda released lazy evaluation (Research Software Ltd., 1985), it became popular. And by 1987, more than a dozen non-strict functional programming languages had emerged. Read this post about the Haskell history on Serokell domain.
Miranda was the most widely used, but it was patented software. During the Conference on Functional Programming Languages and Computer Architecture (FPCA, 1987) in Portland, Oregon, it was agreed to create a committee to define an open standard for such languages. In other words, it had to consolidate all current functional languages into one general language that would provide a basis for future research in developing functional programming languages.
The new language was named after Haskell Curry and had to be a free language for research and practical problems. Free languages are based on a standard formulated by a committee of developers. Further, anyone can implement the standard and write a language compiler. The first version of the Haskell standard (Haskell 1.0) was published on April 1, 1990, and had five updates (1.0, 1.1, 1.2, 1.3, and 1.4 versions).
The next version of the Haskell language standard (Haskell 98) was first published as «The Haskell 98 Report» in February 1999 as the answer to the need for one stable and portable version of the language. It had a standard library for learning as the basis for future development, among other features. In January 2003, a modified version was published named «Haskell 98 Language and Libraries: The Revised Report.» The language continued to evolve rapidly: now, the Glasgow Haskell Compiler (GHC), the main advancements of which is highlighted in this blog section, is considered an objective standard of the language.
The current Haskell standard, Haskell 2010, was announced on November 24, 2009; GHC has supported it since version 7.0.1. Compared to Haskell ’98, it has many performing changes such as hierarchical modules or stable solution. Additional updates were published on January 7, 2011.
Haskell continues to evolve today, but the stable versions are still based on the 1998 and 2010 standards. Apart from them, Haskell includes many extensions, and new ideas constantly appear. Developers in England, the Netherlands, the USA, and Australia are working on the language. Haskell remains demanded because it’s suitable for popular multiprocessing and parallel computing technology. It is currently ranked 23rd most popular among programming languages on Github, 38th in the TIOBE index, and 16th in the RedMonk ranking.
There are many complex projects implemented in Haskell:
– Compilers and other development tools.
– Distributed version control system Darcs.
– The xmonad window manager.
– HAppS Web application server.
– Pugs interpreter/compiler for Perl 6.
– House OS.
– Lava hardware description language.
– LOLITA natural language processing system.
– Proof systems for Equinox / Paradox and Agda theorems.
In 2015, Facebook introduced new anti-spam filters based on the Haskell programming language. Louis Brandy, one of the developers, explained that Haskell perfectly handles concurrent tasks and allows developers to set up these tasks efficiently and conveniently. Spammers change tactics so quickly that Facebook needs a tool to develop and continually modify spam filters that take effect immediately.
Today new parallel-oriented programming languages have been developed (like Google’s Go and Mozilla’s Rust). They are not as efficient as Haskell but seem to be easier to learn. Anyway, Haskell has contributed to developing other programming languages and launching new promising projects.
Some developers compare the Haskell language to general-purpose programming languages available to pick up from and call it best for secure software development. Other programmers find Haskell beautiful, concise, and clean with a single-valued code that cannot be interpreted in two different ways. Simultaneously, they point out that it has a high entry threshold that requires long brainstorming and learning complex concepts. As a result, many specialists avoid studying Haskell as a somewhat exotic programming language.