We use cookies and other tracking technologies to improve your browsing experience on our site, analyze site traffic, and understand where our audience is coming from. To find out more, please read our privacy policy.

By choosing 'I Accept', you consent to our use of cookies and other tracking technologies.

We use cookies and other tracking technologies to improve your browsing experience on our site, analyze site traffic, and understand where our audience is coming from. To find out more, please read our privacy policy.

By choosing 'I Accept', you consent to our use of cookies and other tracking technologies. Less

We use cookies and other tracking technologies... More

Login or register
to apply for this job!

Login or register
to save this job!

Login or register
to save interesting jobs!

Login or register
to get access to all your job applications!

Login or register to start contributing with an article!

Login or register
to see more jobs from this company!

Login or register
to boost this post!

Show some love to the author of this blog by giving their post some rocket fuel πŸš€.

Login or register to search for your ideal job!

Login or register to start working on this issue!

Engineers who find a new job through Functional Works average a 15% increase in salary πŸš€

Blog hero image

Haskell - Doomed to Succeed?

Ari Fordsham 18 December, 2020 | 3 min read

The unofficial motto of Haskell, the predominant lazy functional language, has long been:

"Avoid success at all costs."

This is attributed to Simon L. Peyton-Jones (SPJ), the main architect of the Haskell language and the GHC compiler, and mentioned in the slides of a talk he gave at the POPL conference in 2003.

This seems an odd statement. What's wrong with a bit of success?

The exact meaning of this statement is controversial. Simon Marlow, another major Haskell figure, quotes SPJ that this statement (expression?) should not be bracketed (avoid success) at all costs, i.e. do all you can to ensure success doesn't happen, but rather avoid (success at all costs) - success may be a nice idea, but avoid falling in to the trap of focusing all the community's efforts to attaining it.

But isn't success the goal of any project?

The answer can be found in an article written by the aformentioned Marlow and Peyton-Jones:

[T]he ultimate goal for us, the main developers of GHC, is to produce research rather than code. We consider developing GHC to be an essential prerequisite: the artifacts of research are fed back into GHC, so that GHC can then be used as the basis for further research that builds on these previous ideas.

In other words, the success referred to is commercial success, or wide user adoption. The stated goal of GHC (and the Haskell language) is to better understand the principles of functional programming, and the mathematical and logical principles that underly them.

A wide user base, using Haskell in important projects, poses a responsibility to the Haskell designers. Users have needs, and can push the project in directions irrelevant to the core research goals, as the authors go on to state:

[A] great deal of effort is put into ensuring that [GHC] can be relied on for production use. There has often been some tension between these two seemingly contradictory goals, but by and large we have found a path that is satisfactory both from the research and the production-use angles.

They certainly seem to have been successful: GHC is widely considered a robust and reliable compiler, and the GHC developers take the quality of their product very seriously, despite their very limited resources.

So while SPJ claims to have been saying "don't allow efforts to make the platform appealing to production users take away from Haskell's key principles," It definitely has been understood in practice to mean "Let's try not to draw attention to ourselves, because too many users will prevent us doing what we want to do."

Until now.

In his POPL talk, SPJ quotes Anthony Hoare as saying:

"I fear that Haskell is doomed to succeed.”

Haskell's advantages - a strong mathematical basis, facilities for abstraction and de-duplication, excellent performance compared to other high-level languages, good correctness guarantees, ease of concurrency, but most of all, enabling a better way to think about code, have increasingly lead to its widespread adoption in production code. Haskell is contending with success despite itself.

This shift in the makeup of the Haskell community certainly has led to a shift in focus. At the Haskell eXchange conference in November 2020, SPJ announced the Haskell Foundation, explicitly "dedicated to broadening the adoption of Haskell" as well as "supporting its ecosystem of tools, libraries, education, and research."

So while the original architects of Haskell may find this unintended success unwanted, it is certainly a vindication of their vision: remaining faithful to strong mathematical principles and resisting calls for premature pragmatism can transform the things we do.

UPDATE

Simon Peyton-Jones has graciously commented on this post - you can read his remarks here.

In short, he reiterates that wide production adoption was never an anti-goal of Haskell, but rather not "making fundamental compromises of core principles [of Haskell] in pursuit of short-term production goals."

The author of this article is currently looking for work. You can read my CV on Google Docs, and be in touch by email to arifordsham@gmail.com or message me on LinkedIn.

Originally published on arifordsham.com

Related Issues

WorksHub / client
  • Started
  • 0
  • 18
  • Intermediate
  • Clojure
  • $150
viebel / klipse-clj
viebel / klipse-clj
  • Started
  • 0
  • 1
  • Intermediate
  • Clojure
viebel / klipse
  • Open
  • 0
  • 0
  • Intermediate
  • Clojure
viebel / klipse
  • 1
  • 0
  • Intermediate
  • Clojure
viebel / klipse
  • Started
  • 0
  • 2
  • Intermediate
  • Clojure
  • $80
viebel / klipse
  • Open
  • 0
  • 0
  • Advanced
  • Clojure
  • $80
viebel / klipse
  • Started
  • 0
  • 2
  • Advanced
  • Clojure
  • $180
viebel / klipse
  • Started
  • 0
  • 1
  • Intermediate
  • Clojure
viebel / klipse
  • 1
  • 1
  • Advanced
  • Clojure
  • $300

Get hired!

Sign up now and apply for roles at companies that interest you.

Engineers who find a new job through Functional Works average a 15% increase in salary.

Start with GitHubStart with Stack OverflowStart with Email