Evangelism - Haskell

Welcome to the Functional Programming Zulip Chat Archive. You can join the chat here.

Adam Flott

Any good articles/literature on evangelizing Haskell to a semi-technical audience? I'm trying to show my coworkers that there is more than Python and JSON.

Sridhar Ratnakumar

I'm interested in the answer to this query, as well.

Meanwhile, here's a relevant case study from a former employer of mine:

Three years ago, I quit my job to bet everything on the proposition that Haskell could excel not just for specialized, high-assurance software, but for the kinds of software that millions of engineers work on every day. [...] Strong types and pure values decreased bug counts and made code much more readable. https://www.youtube.com/watch?v=riJuXDIUMA0

Georgi Lyubenov // googleson78

this could also be helpful - https://github.com/thma/WhyHaskellMatters

In this article I try to explain why Haskell keeps being such an important language by presenting some of its most important and distinguishing features and detailing them with working code example...
tristanC

Perhaps this is also helpful - https://github.com/Gabriel439/post-rfc/blob/master/sotu.md#state-of-the-haskell-ecosystem

Blog post previews in need of peer review. Contribute to Gabriel439/post-rfc development by creating an account on GitHub.
tristanC

For pythonistas coworkers, looking at FP in general may be important too. I find that talk quite useful: The Power of Composition - Scott Wlaschin
YouTube - The Power of Composition - Scott Wlaschin

Adam Flott

tristanC said:

For pythonistas coworkers, looking at FP in general may be important too. I find that talk quite useful: The Power of Composition - Scott Wlaschin
https://youtu.be/vDe-4o8Uwl8?t=97

This looks quite good! Thanks!!

Sandy Maguire

i think laziness and purity are the most important things that haskell brings to the table

Sandy Maguire

adopting purity in how you write other languages is probably going to get a lot more traction than hs ever will

Sandy Maguire

and compositionality is pretty great too!

Sandy Maguire

it starts with a disclaimer "this is going to look like moon code, so don't try to understand, just appreciate how little work i'm doing"

Sandy Maguire

imo there is a lot of room for _inspiration_ on the hs front --- if for nothing other than getting j random hacker questioning what he knows about programming

Sandy Maguire

that being said, i'm sorta starting to think that learning hs is an information hazard; it's going to make all other languages seem inadequate, until you start feeling like hs is inadequate and are forever searching for the best abstraction

James King

I think there are significant network effects that have been in play for decades that are hard to overcome. Computers are taught to children as machines that execute instructions and they are given the operational semantics and pedagogy: variable, statement, branch, loop.

James King

What gets me is how people exaggerate common problems endemic to all programming languages as particularly unique to Haskell. I think people end up in tribes and switching to a new language is expensive so people rarely do it.

James King

However the rare occasion where I've managed to convince someone to stick with Haskell and learn it has been a mix of convenient lies (this is like what you know from language X...) and then dispelling them quickly as we run into pragmatic limitations.

James King

Even I wasn't convinced by laziness and composition at first but now I realize how essential they are.

Hazem

Since the audience are Python users, I think the most clear improvement they'll appreciate is what you get with static types + a really good type checker (specifically in Haskell)

https://chrisdornan.com/posts/2020-03-30-matters.html

The same author has another point about the benefits of learning Haskell:
https://chrisdornan.com/posts/2020-04-16-structures-for-free.html

This talk is not Haskell specific but this is where I would start if I were to evangelize Haskell to others:
YouTube - "Propositions as Types" by Philip Wadler

James King

Being friendly, enthusiastic, and supportive can go a long way. And getting people to just write programs is huge. I noticed when teaching the last group at work that _analysis paralysis_ is a big deal, something I experienced myself, "what is the correct way to do this" can easily lead to dead ends as they explore the Internet and get overwhelmed.

James King

Then you get people who say, "I tried learning Haskell once..." And they go on thinking Java or C++ is easier. But people forget that it takes just as long to master C++ and even the experts struggle with move semantics in constructors and the legacy of it's C heritage infecting so much of the ecosystem.

James King

So I take the focus away from correctness and purity and demonstrate why it makes understanding easier.

Hazem

If anyone is interested in discussing this topic, I'm planning a video/voice chat session to discuss Growing the Haskell Community at https://funprog.zulipchat.com/#narrow/stream/234801-VideoChat/topic/Growing.20the.20Haskell.20Community
in #VideoChat

tristanC

Thank you all for sharing your views on the subject. I am also a member of a Python and YAML development team and I struggle to communicate the benefits of using Haskell. One thing I noticed is that a pragmatic developer is often looking for safety in numbers. I understand that not everyone is passionate enough to spend the energy required to go outside of their skill set and learn new things.

For example, what is the best answer to the what popular project is written in Haskell? question.

James mentioned that mastering C++ may take longer than learning Haskell, but what about Python? (It seems like given enough unittest coverage, Python may yield better results in terms of immediate pragmatic efficiency.)
Then there is the story about how null pointer is a billion dollar mistake. But again, it's not clear that using another language would really help.

Pavan Rikhi

It seems like given enough unittest coverage, Python may yield better results in terms of immediate pragmatic efficiency

I've worked on python projects that have 99%+ code coverage but making any sort of large structural change to the codebase still caused me anxiety because of how fragile everything was. With Haskell, large structural changes feel mostly mechanical and are mostly just following the compiler errors/warnings.

Pavan Rikhi

Pandoc might be the most popular opensource Haskell application:
https://github.com/search?q=language%3AHaskell+stars%3A%3E%3D1300&type=Repositories
https://github.com/erkmos/haskell-companies

GitHub is where people build software. More than 40 million people use GitHub to discover, fork, and contribute to over 100 million projects.
A gently curated list of companies using Haskell in industry - erkmos/haskell-companies
tristanC

Pavan Rikhi said:

It seems like given enough unittest coverage, Python may yield better results in terms of immediate pragmatic efficiency

I've worked on python projects that have 99%+ code coverage but making any sort of large structural change to the codebase still caused me anxiety because of how fragile everything was. With Haskell, large structural changes feel mostly mechanical and are mostly just following the compiler errors/warnings.

Oops, don't get me wrong, I noticed that indeed, but I find it hard to show and tell, especially quantitatively. I forgot to mention this article about this particular topic: https://williamyaoh.com/posts/2019-11-30-how-does-haskell-make-life-easier.html