One of the key components of the CenturyLink Cloud Developer Center is sharing knowledge. In keeping with that spirit, we are embarking on a series around programming languages. Throughout the series we will be reaching out to Devs, Coders, and Engineers to find out what their favorite languages are, why they favor them over others, and identifying some use cases for each.
Our first language in the series is Haskell.
What is Haskell?
Haskell is a lazily-evaluated pure functional programming language named after mathematician Haskell Curry. Haskell is in the same family as Standard ML, OCaml, and F#, and has influenced many other languages. It has been in active community development for over 20 years and supports a large community of academic researchers and computer science professionals, who continue to iterate and improve on the language.
Why Use Haskell?
Haskell offers a number of advantages for both researchers and software development professionals. The strength of the Haskell-type system, wide availability of libraries, and the fact that it compiles to native code makes Haskell suitable for developing high-performance applications where stability and correctness are important.
The advanced type system offered by Haskell, in conjunction with a number of libraries and language extensions, makes Haskell a practical method for research and prototyping systems and generating proofs of correctness.
• Haskell offers a rich type system that helps developers ensure the correctness of their applications. Programs that compile in Haskell have a very high likelihood of operating with fewer errors than applications in other languages.
• Haskell is highly-expressive and allows developers to get more done with less code.
• Haskell compiles to native code and can achieve performance comparable to C or C++.
• Haskell possesses a large number of available libraries for many different tasks.
• Haskell supports programming with abstract mathematical concepts (e.g. monads, functors, combinators, GADT, etc.).
• Lazy evaluation can make it difficult to reason about the performance characteristics of a specific program.
• Many resources available for Haskell developers pre-suppose a high level of familiarity with category and type theoretical concepts that may be new to developers outside of the functional programming ecosystem.
• The rapid release schedule of GHC and associated libraries means that long-term maintenance of applications can be difficult without external tools.
The Haskell Community
The Haskell ecosystem has a rich and active community of contributors ranging from individual developers, academic institutions, and commercial entities that support Haskell development. There are many books, papers, videos, and articles on the Haskell wiki and elsewhere to aid a Developer in getting started with Haskell.
If you are looking to learn Haskell, joining a Haskell Meetup is a great way to connect with Haskell fanatics in your area. At CenturyLink Cloud, we host the Saint Louis Haskell User Group at our St. Louis Developer Center.
Stay tuned for more on our language series and sign up below to keep up to date on everything "CODE" with our Developer-focused newsletter.