# My talk "Functional Programming: Failed Successfully" is now available!

**URL:** https://discourse.haskell.org/t/my-talk-functional-programming-failed-successfully-is-now-available/9725
**Category:** Uncategorized
**Created:** [June 12, 2024, 6:53pm UTC](https://discourse.haskell.org/t/my-talk-functional-programming-failed-successfully-is-now-available/9725 "2024-06-12T18:53:49Z")
**Posts on this page:** 20
**Page:** 5

<div class="post-metadata">

### Author: ![atravers](https://avatars.discourse-cdn.com/v4/letter/a/45deac/32.png) [@atravers](https://discourse.haskell.org/u/atravers)
#### Post date: [June 25, 2024, 9:49am UTC](https://discourse.haskell.org/t/my-talk-functional-programming-failed-successfully-is-now-available/9725/81 "2024-06-25T09:49:21Z")

</div>

> Haskell should not be a political weapon.

A curious choice of words:

- [Sunk by Windows NT](https://www.wired.com/1998/07/sunk-by-windows-nt)

- [Desperately Needed Remedies for the Undebuggability of Large Floating-Point Computations in Science and Engineering](https://people.eecs.berkeley.edu/~wkahan/Boulder.pdf)

…if only they had used Erlang `:-b`

* * *

> [@](#):
>
> 1. “Have you seen what they call ‘software engineering’? Complete nonsense. We’ve seen it, we’re fed up with it.”

Correct: that was my intended interpretation. As for that other interpretation:

> [@](#):
>
> 1. “We know what software engineering is. And we are the majority in Haskell.”

…here’s some suggested reading:

> [@"Modularizing GHC" paper](http://discourse.haskell.org/t/modularizing-ghc-paper/4471):
>
> Hi! We are happy to announce the first public release of a paper we wrote about modularizing GHC! The paper: [https://hsyl20.fr/home/files/papers/2022-ghc-modularity.pdf](https://hsyl20.fr/home/files/papers/2022-ghc-modularity.pdf) Announce blog post: [Modularizing GHC paper](https://hsyl20.fr/home/posts/2022-05-03-modularizing-ghc-paper.html) It’s related to the following conversation here: [Modularizing GHC, do we want an HFTP?](http://discourse.haskell.org/t/modularizing-ghc-do-we-want-an-hftp/4022/)

* * *

> [@ReleaseCandidate](#):
>
> Software engineering did and does **always** rely “on mathematics”.

# \>\_\< …software in space.

I **completely** forgot about that one: software engineering has existed since (at least) the first (re)programmable computer was sent into space. So plenty of mathematical and logical checks needed for that software, to prevent _extremely inaccessible hardware_ from going very astray…

---

<div class="post-metadata">

### Author: ![graninas](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/graninas/32/983_2.png) [@graninas](https://discourse.haskell.org/u/graninas)
#### Post date: [June 25, 2024, 1:34pm UTC](https://discourse.haskell.org/t/my-talk-functional-programming-failed-successfully-is-now-available/9725/82 "2024-06-25T13:34:09Z")

</div>

So many my points from the talk have real ground and are quite widespread across FP communities, especially Haskell. These things prevent its wider adoption and are seen by the outside world as misbeliefs or misconceptions. Of course, not the entire community supports everything but I don’t see a general disagreement with these:

- “OOP is trash”
- “Math is king”
- “Mainstream is wrong. What it does is garbage. We know better”
- “Software Engineering is Math. FP is Math”
- “We have our oun way, we don’t need to follow rules of the industry”
- “We’re fine in our small, isolated world, we don’t need Haskell to become more popular”.
- “The industry is broken, we need to fix it. Haskell is a political weapon”

I recently learned that the purpose of HF is not industry adoption. The goal has changed therefore, and I can see why. The road to popularity goes through 1) recognizing 2) solving social problems (like those misbeliefs and narratives). This meets too much resistance, and needs a very different approach, so it’s easier to focus on technical terms and forget about wide adoption. If that’s so, let’s at least be honest about this. I will then stop trying to convince the outer world to use Haskell

---

<div class="post-metadata">

### Author: ![f-a](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/f-a/32/2740_2.png) [@f-a](https://discourse.haskell.org/u/f-a)
#### Post date: [June 25, 2024, 2:04pm UTC](https://discourse.haskell.org/t/my-talk-functional-programming-failed-successfully-is-now-available/9725/83 "2024-06-25T14:04:35Z")

</div>

> [@graninas](#):
>
> Of course, not the entire community supports everything but I don’t see a general disagreement with these:
> 
> - “OOP is trash”
> - “Math is king”
> - “Mainstream is wrong. What it does is garbage. We know better”
> - “Software Engineering is Math. FP is Math”
> - “We have our oun way, we don’t need to follow rules of the industry”
> - “We’re fine in our small, isolated world, we don’t need Haskell to become more popular”.
> - “The industry is broken, we need to fix it. Haskell is a political weapon”

Alexander, this feels a bit like an act of rhetorical vandalism in what has been — with highs and lows — an informative discussion.  
There are many interesting bits in your presentation; I am unconvinced advocacy will change much with regards to making Haskell more popular to management.

Part of the HF job is fostering industry adoption, e.g. see [Haskell Certification Program](http://discourse.haskell.org/t/haskell-certification-program/9798). There are many ways to skin this functional cat.

---

<div class="post-metadata">

### Author: ![simonpj](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/simonpj/32/890_2.png) [@simonpj](https://discourse.haskell.org/u/simonpj)
#### Post date: [June 25, 2024, 2:18pm UTC](https://discourse.haskell.org/t/my-talk-functional-programming-failed-successfully-is-now-available/9725/84 "2024-06-25T14:18:27Z")

</div>

> I recently learned that the purpose of HF is not industry adoption.

That’s a bit surprising. Where did you learn this? I’m a member of the board and I have not been aware of any change of purpose. The [web site](https://haskell.foundation) says

“An independent, non-profit organization dedicated to broadening the adoption of Haskell, by supporting its ecosystem of tools, libraries, education, and research.”

This is spelled out a bit more in the [HF’s vision statement](https://haskell.foundation/vision/).

I think it is indeed true that _industry_ adoption is not the _sole_ goal of HF. Hence the slogan “Avoid success-at-all-costs”. For example, I would argue against compromising the conceptual integrity of the language in a single-minded pursuit of popularity.

But that does not mean that adoption is a non-goal – quite the reverse (see above). I personally spend a lot of time and effort working out how to reduce the friction of adoption by increasing stability, and the HF has a [Stability Working Group](https://github.com/haskellfoundation/stability) that does nothing else. (Here’s a [state of play document](https://docs.google.com/document/d/1sX_rXHx8Mj3Kae9GalR2BwZ5-xzl7UpnpMBwl4dqsWY/edit?usp=sharing).)

I think that we should not characterise this conversation in terms of who is “right” and who is “wrong”. Rather, I would say that Haskell takes a single core idea (statically-typed, purely functional programming) and sees how far it will go. If that’s not what someone wants, then they shouldn’t use Haskell; it’s not that they are right or wrong – just that Haskell isn’t right for them. We should not (and I hope do not) claim that Haskell is Definitely Better than alternatives, that we are right and everyone else is wrong. It’s a grand experiment, to take a single radical idea, stick to it like glue, and see where it takes us. That has been the story of my professional life, starting in around 1984, and it has been a pretty exciting journey. I would love more people to adopt Haskell, but I want them to do so because they love the joy and beauty of the core ideas.

All that said, what we _should_ do, I think, is to bear down relentlessly on accidental friction, things that make mainstream developers get fed up with Haskell, but that are _not_ a consequence of the core vision for Haskell, but rather are simply engineering shortcomings. For example, before cabal it was a huge pain to get libraries distributed and installed; now it is a breeze. Huge win. But the list of accidental frictions is long, and it will continue to take a lot of design and engineering work to sort out.

> The road to popularity goes through 1) recognizing 2) solving social problems (like those misbeliefs and narratives).

Even if we were to solve all the sources of technical friction, we would still have the social issues of perception, training, certification, recruitment, and so on. I totally agree that it’s not just technical! I also agree that as a community we are less good at addressing social problems than technical ones.

But different people have different skills, and I’d love to hear more from folk with good ideas for addressing “social friction” rather than just “technical friction”.

thanks for starting this thread

Simon

---

<div class="post-metadata">

### Author: ![graninas](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/graninas/32/983_2.png) [@graninas](https://discourse.haskell.org/u/graninas)
#### Post date: [June 25, 2024, 2:50pm UTC](https://discourse.haskell.org/t/my-talk-functional-programming-failed-successfully-is-now-available/9725/85 "2024-06-25T14:50:28Z")

</div>

> [@simonpj](#):
>
> That’s a bit surprising. Where did you learn this?

Hi Simon,

This is the first time we’re talking to each other, I appreciate your detailed response.

I learned this from @tomjaguarpaw on Reddit/r/haskell. The exact quote is this:

> Firstly, a point of information: (one of) the goal(s) of the Haskell Foundation is to broaden Haskell adoption. It not intended to push Haskell to industry specifically. (I personally happen to to believe it can’t do the former without the latter, but in principle there is a distinction.)

Maybe he can add something on this, because he said there was some discussion with other members of HF, and it’s better for us to get the info from the first hands of that discussion.

I was surprised, too. I often mention HF as an analog of Rust Foundation, and learning that they differ in goals was contradictory to what I thought.

I certainly don’t think that adoption is the only goal. It is essential as Haskell is still a reasearch language.

---

<div class="post-metadata">

### Author: ![sullyj3](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/sullyj3/32/2639_2.png) [@sullyj3](https://discourse.haskell.org/u/sullyj3)
#### Post date: [June 25, 2024, 3:05pm UTC](https://discourse.haskell.org/t/my-talk-functional-programming-failed-successfully-is-now-available/9725/86 "2024-06-25T15:05:40Z")

</div>

> [@graninas](#):
>
> It not intended to push Haskell to industry specifically.

For our purposes the key word in Tom’s quote is “specifically”. This shouldn’t be taken to mean that industry adoption is necessarily a non-goal. If I’m intepreting him right, he’s saying that the stated purpose is to broaden adoption, and some might interpret that to include industry adoption as a subgoal, and some might not. I hope he’ll clarify if I’m misinterpreting him!

---

<div class="post-metadata">

### Author: ![tomjaguarpaw](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/tomjaguarpaw/32/1230_2.png) [@tomjaguarpaw](https://discourse.haskell.org/u/tomjaguarpaw)
#### Post date: [June 25, 2024, 3:07pm UTC](https://discourse.haskell.org/t/my-talk-functional-programming-failed-successfully-is-now-available/9725/87 "2024-06-25T15:07:14Z")

</div>

There may have been a miscommunication around “one of the goals” of the HF versus “the singular goal”. In [my comment on the matter](https://old.reddit.com/r/haskell/comments/1de7l8w/my_talk_functional_programming_failed/l8f8n9m/) I was responding to the [part of the talk](https://www.youtube.com/watch?v=018K7z5Of0k&t=510s) which said:

> There is a Haskell Foundation by the way. It’s an organization that is intended to push Haskell to the industry. It works almost for three years but Haskell is still on the decline[\*] according to the graph.

I interpreted that to mean that “the singular goal of the HF is to push adoption Haskell in industry”. My comment in response was supposed to clarify that that is only one amongst many goals:

> Firstly, a point of information: (one of) the goal(s) of the Haskell Foundation is to broaden Haskell adoption. It not intended to push Haskell to industry specifically. (I personally happen to to believe it can’t do the former without the latter, but in principle there is a distinction.)

So Simon is right: pushing for industry adoption is not the sole or primary goal of the HF, but it is a goal.

(To share more on my personal view: I happen to believe that making Haskell more suitable for adoption in industry _should_ be the HF’s primary focus, but not all board members agree with me.)

* * *

N.B.: I’m the Vice Chair of the HF

[\*] By the way, I don’t believe that the graph in question provides evidence of decline. For a comparison against Java and C# (as controls) see [my comment on that topic on Reddit](https://old.reddit.com/r/haskell/comments/1de7l8w/my_talk_functional_programming_failed/l8ejefh/).

---

<div class="post-metadata">

### Author: ![graninas](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/graninas/32/983_2.png) [@graninas](https://discourse.haskell.org/u/graninas)
#### Post date: [June 25, 2024, 3:20pm UTC](https://discourse.haskell.org/t/my-talk-functional-programming-failed-successfully-is-now-available/9725/88 "2024-06-25T15:20:54Z")

</div>

> [@f-a](#):
>
> Alexander, this feels a bit like an act of rhetorical vandalism

I don’t know what this means, but will try to avoid that.

---

<div class="post-metadata">

### Author: ![graninas](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/graninas/32/983_2.png) [@graninas](https://discourse.haskell.org/u/graninas)
#### Post date: [June 25, 2024, 3:28pm UTC](https://discourse.haskell.org/t/my-talk-functional-programming-failed-successfully-is-now-available/9725/89 "2024-06-25T15:28:51Z")

</div>

To what matters, I strongly believe HF should do some regular comprehensive sociology in order to have understanding of social and technical situation and to have a measurable Definition of Done to know if the goals are getting closer or not and what was done right/wrong.

---

<div class="post-metadata">

### Author: ![atravers](https://avatars.discourse-cdn.com/v4/letter/a/45deac/32.png) [@atravers](https://discourse.haskell.org/u/atravers)
#### Post date: [June 25, 2024, 3:36pm UTC](https://discourse.haskell.org/t/my-talk-functional-programming-failed-successfully-is-now-available/9725/90 "2024-06-25T15:36:46Z")

</div>

So the HF can do that more quickly: are there any analogous organisations (e.g. the Python Steering Council or Rust Foundation) which carry out regular comprehensive sociology and have a measurable definition of _“done”_ or _“completed”_ ? Then the HF can use their experiences as a point of reference…

---

<div class="post-metadata">

### Author: ![graninas](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/graninas/32/983_2.png) [@graninas](https://discourse.haskell.org/u/graninas)
#### Post date: [June 25, 2024, 3:45pm UTC](https://discourse.haskell.org/t/my-talk-functional-programming-failed-successfully-is-now-available/9725/91 "2024-06-25T15:45:06Z")

</div>

I don’t quite know, but if they don’t do that, HF can be the first. I think the value of such sociology and a measurable (maybe unreachable) DoD can’t be denied

---

<div class="post-metadata">

### Author: ![atravers](https://avatars.discourse-cdn.com/v4/letter/a/45deac/32.png) [@atravers](https://discourse.haskell.org/u/atravers)
#### Post date: [June 25, 2024, 3:48pm UTC](https://discourse.haskell.org/t/my-talk-functional-programming-failed-successfully-is-now-available/9725/92 "2024-06-25T15:48:40Z")

</div>

Or perhaps those analogous organisations just don’t require such mechanisms - if that’s the case, then neither does the HF.

---

<div class="post-metadata">

### Author: ![effectfully](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/effectfully/32/3266_2.png) [@effectfully](https://discourse.haskell.org/u/effectfully)
#### Post date: [June 25, 2024, 6:19pm UTC](https://discourse.haskell.org/t/my-talk-functional-programming-failed-successfully-is-now-available/9725/93 "2024-06-25T18:19:01Z")

</div>

The Haskell community is by far the nicest and most welcoming community I’ve ever seen. Almost any other community would’ve repelled violently to such an endless stream of baseless accusations and straw man arguments like this one:

> [@graninas](#):
>
> “Software Engineering is Math. FP is Math”

yet folks here keeping addressing them politely. Has anyone ever actually heard that software engineering is math? I certainly haven’t, it’s such a ridiculous take, almost like “biology is astronomy”. I can imagine somebody sufficiently crazy believes that software engineering is math, but is that common in the Haskell community? Absolutely not, in my opinion.

To me this all looks like an elaborated ad to boost the Alexander’s following on social media and sell more books, this isn’t an honest attempt to expose the limitations of our community. If you want to see how such an attempt would look like, check out [Leaving Rust gamedev after 3 years](https://loglog.games/blog/leaving-rust-gamedev/): you’ll find there plentiful disclaimers, acknowledgements of own limitations, elaborate clarifications etc etc. And this is what the author thinks of Haskell by the way:

> The closest thing to Rust’s view on ECS I can think of is Haskell, except, and I know this is an oversimplification but I’ll say it anyway, I do feel that the overall community in Haskell is a lot more mature, and that people in general tend to be more reasonable about the existence of other approaches, and view Haskell as a “fun tool to solve problems where it fits well”.

Haskell has its issues, but the critique here is just made up nonsense.

---

<div class="post-metadata">

### Author: ![Ambrose](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/ambrose/32/5672_2.png) [@Ambrose](https://discourse.haskell.org/u/Ambrose)
#### Post date: [June 25, 2024, 7:41pm UTC](https://discourse.haskell.org/t/my-talk-functional-programming-failed-successfully-is-now-available/9725/96 "2024-06-25T19:41:06Z")

</div>

> [@graninas](#):
>
> “Software Engineering is Math. FP is Math”

is fast and loose reasoning math? idk but it sure is useful

---

<div class="post-metadata">

### Author: ![graninas](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/graninas/32/983_2.png) [@graninas](https://discourse.haskell.org/u/graninas)
#### Post date: [June 25, 2024, 8:03pm UTC](https://discourse.haskell.org/t/my-talk-functional-programming-failed-successfully-is-now-available/9725/97 "2024-06-25T20:03:17Z")

</div>

Sorry folks, I think this thread is over. I’ll not be responding anymore.

---

<div class="post-metadata">

### Author: ![f-a](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/f-a/32/2740_2.png) [@f-a](https://discourse.haskell.org/u/f-a)
#### Post date: [June 25, 2024, 8:08pm UTC](https://discourse.haskell.org/t/my-talk-functional-programming-failed-successfully-is-now-available/9725/98 "2024-06-25T20:08:43Z")

</div>

I ask everyone to [assume good faith](https://mail.haskell.org/pipermail/haskell/2016-September/024995.html) in debating this talk.

Alexander, your talk comes with broad-strokes criticism of the community, I expect you to handle robust objections.

---

<div class="post-metadata">

### Author: ![graninas](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/graninas/32/983_2.png) [@graninas](https://discourse.haskell.org/u/graninas)
#### Post date: [June 25, 2024, 8:14pm UTC](https://discourse.haskell.org/t/my-talk-functional-programming-failed-successfully-is-now-available/9725/99 "2024-06-25T20:14:19Z")

</div>

I’m all yours, go ahead with your feedback, and then, when enough of it is collected, I’ll respond something, but for now I don’t feel it will be productive for me personally

---

<div class="post-metadata">

### Author: ![atravers](https://avatars.discourse-cdn.com/v4/letter/a/45deac/32.png) [@atravers](https://discourse.haskell.org/u/atravers)
#### Post date: [June 25, 2024, 9:27pm UTC](https://discourse.haskell.org/t/my-talk-functional-programming-failed-successfully-is-now-available/9725/100 "2024-06-25T21:27:17Z")

</div>

> [@](#):
>
> Is fast and loose reasoning math?

In the correct context…I would say _“it’s allowed”_:

- [Fast and Loose Reasoning is Morally Correct](https://www.cs.ox.ac.uk/people/jeremy.gibbons/publications/fast+loose.pdf)

---

<div class="post-metadata">

### Author: ![atravers](https://avatars.discourse-cdn.com/v4/letter/a/45deac/32.png) [@atravers](https://discourse.haskell.org/u/atravers)
#### Post date: [June 25, 2024, 10:17pm UTC](https://discourse.haskell.org/t/my-talk-functional-programming-failed-successfully-is-now-available/9725/101 "2024-06-25T22:17:34Z")

</div>

> [@](#):
>
> [atravers:](http://discourse.haskell.org/t/introducing-neohaskell-a-beacon-of-joy-in-a-greyed-tech-world/7688/60)
> 
> > The more worrisome thing is how some core features of Haskell come from the removal of features, including the lack of ergonomic and performant mutation.
> 
> …and when someone probably smarter than all of us combined (yes, that includes me!) discovers at least one useful ~~_denotational_~~ [denotative](https://wiki.haskell.org/Denotative) semantics for mutation, I confidently predict mutation will be added to some Haskell implementation within three months, be it GHC or another new implementation.

The story of I/O in Haskell provides a similar example: In 1990, Haskell version 1.0 used the [dialogue](https://hackage.haskell.org/package/dialogue) as the basis for I/O (with the alternate continuation-based interface being implemented in terms of it)…and it was generally considered _“cringe-worthy”_. Fortunately, and based on prior research into category theory, the monadic interface was adapted for use in Haskell. For I/O, it worked _“well enough”_ to be adopted as the _replacement_ standard interface for Haskell 1.3 (released 1996).

So there may yet be a way to bring _certain_ features normally associated with OO-languages into non-strict functional languages: find a _“suitable”_ field of mathematics or logic which can be used to map said features into Haskell in a more formal way. As for some starting points:

- [Declarative Programming in the Context of Object-Oriented Languages (DP-COOL’03)](https://juser.fz-juelich.de/record/48746/files/NIC212837.pdf), which includes _Functional versus OO Programming: Conﬂict Without a Cause_ (pages 69-91 of 300).

- [Object Oriented Mathematics](http://hjemmesider.diku.dk/~grue/papers/oom/oom.pdf) (1995).

---

<div class="post-metadata">

### Author: ![sclv](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/sclv/32/71_2.png) [@sclv](https://discourse.haskell.org/u/sclv)
#### Post date: [June 26, 2024, 4:12am UTC](https://discourse.haskell.org/t/my-talk-functional-programming-failed-successfully-is-now-available/9725/102 "2024-06-26T04:12:11Z")

</div>

I don’t think anyone here believes any of that. You’re tilting at strawmen and it has been very tiring. I would tend to agree this thread has run its course.

[Previous page](https://discourse.haskell.org/t/my-talk-functional-programming-failed-successfully-is-now-available/9725.md?page=4)

[Next page](https://discourse.haskell.org/t/my-talk-functional-programming-failed-successfully-is-now-available/9725.md?page=6)
